bzoj数据太神了WA掉了,CCF给的官方数据轻松100了,虽然bzoj上ai的大小大了些但怀疑是不是素数问题TAT==,不管了等到noip过完再补坑?对了谁能告诉我为什么devc++有时候没有一些头文件也能输出正确的解比如cstring没写但是本地就这样AC了,洛谷也AC了,然而bzoj编译错误了QAQ
很明显模素数p然后检查,如果不行那说明x+p*i都是不行的,筛掉就好
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#define N 105
#define M 1000005
#define S 10005
#define LL long long
using namespace std;
const int prime[]={10007,10917,30071};
int anss[M],ans[M],n,m;
LL a[N][5];
void readdata(int x)
{
char s[S];int f=1;
scanf("%s",s);
int len=strlen(s);
if (s[0]=='-') f=-1;
for (int i=0;i<len;i++)
if (s[i]!='-')
for (int j=0;j<3;j++)
a[x][j]=(abs(a[x][j]*10)+s[i]-'0')%prime[j]*f;
}
LL calc(int x,int y)
{
LL t=a[n][y];
for (int i=n-1;i>=0;i--)
t=(t*x+a[i][y])%prime[y];
// cout<<x<<' '<<y<<' '<<t<<endl;
return t;
}
void sai(int x,int y)
{
int t=0;
while (x+t*prime[y]<=m)
{
anss[x+t*prime[y]]=0;
t++;
}
}
int check(int x)
{
if (!anss[x]) return 0;
for (int i=0;i<3;i++)
if (calc(x,i))
{
sai(x,i);
return 0;
}
return 1;
}
int main()
{
freopen("data.in","r",stdin);
freopen("equ.out","w",stdout);
scanf("%d%d",&n,&m);
for (int i=0;i<=n;i++) readdata(i);
memset(anss,1,sizeof(anss));
for (int i=1;i<=m;i++)
if (check(i))
{
ans[++ans[0]]=i;
}
for (int i=0;i<=ans[0];i++)
printf("%d\n",ans[i]);
return 0;
}