代码
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int n,m,len,prime[5]={10007,11261,14843,19997,21893},sum(1);
long long a[105][10],f[30000][10],ans[1001001];
long long Calculate(int x,int j){
long long t=0;
for(int i=n;i>=0;i--){
t=(t*x+a[i][j])%prime[j];
}
return t;
}
void Read(int x) {
static char s[10100];int flag=0;
scanf("%s",s);
len=strlen(s);
for(int i=0;i<len;i++){
if(s[i]=='-'){
flag=1;
}else{
for(int j=0;j<5;j++){
a[x][j]=(a[x][j]*10+s[i]-'0')%prime[j];
}
}
}
if(flag==1){
for(int j=0;j<5;j++){
a[x][j]=prime[j]-a[x][j];
}
}
}
int main() {
scanf("%d%d",&n,&m);
for(int i=0;i<=n;i++) {
Read(i);
}
for(int j=0;j<5;j++){
for(int i=0;i<=prime[j];i++){
f[i][j]=Calculate(i,j);
}
}
for(int i=1;i<=m;i++){
int j=0;
for(j=0;j<5;j++){
if(f[i%prime[j]][j]){
break;
}
}
if(j==5){
ans[sum++]=i;
}
}
printf("%d\n",sum-1);
for(int i=1;i<=sum-1;i++){
printf("%lld\n",ans[i]);
}
return 0;
}