求助,T飞了两个点
查看原帖
求助,T飞了两个点
68574
HGJH°L楼主2023/7/11 23:07

一开始用的cin/cout,发现一个都过不去,果断换了快读快输,结果发现#2和#10还是过不去,有大佬能帮忙看看怎么回事吗?

#include<bits/stdc++.h>

using namespace std;

int n,m;
int ans;
long long a[102],b[1000006];
long long mo=1000000007;//懒得试模数了,参考了一下题解的qwq

long long read()
{
	long long zf=1;
	long long sum=0;
	char c=getchar();
	while (c<'0'||c>'9')
	{
		if (c=='-')
		    zf=-1;
		c=getchar();
	}
	while (c>='0'&&c<='9')
	{
		sum=(sum*10+c-'0')%mo;
		c=getchar();
	}
	return zf*sum;
}

void print(long long x)
{
    if(x>9)
    {
        print(x/10);
    }
    putchar(x%10+'0');
}

void solve(long long x)//秦九韶算法
{
	long long tmp=a[n];
	for (int i=n-1;i>=0;i--)
		tmp=(tmp*x+a[i])%mo;
	if (tmp==0)//记录答案
	   b[++ans]=x;
	return ;
}

signed main()
{
	n=read(),m=read();
	for (int i=0;i<=n;i++)
		a[i]=read();
	for (long long i=1;i<=m;i++)
		solve(i);
	print(ans);
	for (int i=1;i<=ans;i++)
	{
		puts("");
		print(b[i]);
	}
	return 0;
}
2023/7/11 23:07
加载中...