一开始用的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;
}