论RP的重要性…随便找了4个素数取模AC了…
BZOJ貌似加强了数据,不过还是过了…
#include <cstdio>
#include <cstring>
const int N=101;
const int L=10010;
const int M=1000010;
const int TOT=4;
int n,m,ans;
int p[TOT+1],a[N],len[N];
bool flg[M];
char s[N][L];
void make_list(){
p[1]=22349;
p[2]=22367;
p[3]=22369;
p[4]=17389;
}
int main(){
make_list();
scanf("%d%d",&n,&m);
for(int i=0;i<=n;i++) scanf("%s",s[i]);
for(int i=0;i<=n;i++) len[i]=strlen(s[i]);
for(int i=1;i<=TOT;i++){
for(int j=0;j<=n;j++){
int flag=(s[j][0]=='-'?1:0);
a[j]=0;
for(int k=flag;k<len[j];k++) a[j]=(a[j]*10+s[j][k]-'0')%p[i];
if(flag) a[j]=-a[j];
}
for(int j=1;j<=p[i];j++){
int tmp=0;
for(int k=n;k>=0;k--) tmp=(tmp*j+a[k])%p[i];
if(tmp) for(int k=0;j+k*p[i]<=m;k++) flg[j+k*p[i]]=1;
}
}
for(int i=1;i<=m;i++) if(!flg[i]) ans++;
printf("%d\n",ans);
for(int i=1;i<=m;i++) if(!flg[i]) printf("%d\n",i);
return 0;
}