1 solutions
-
0
C++ :
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define M 110 using namespace std; typedef long long ll; const int prime[]={10007,11261,14843,19997,21893}; int n,m,stack[1001001],top; ll a[M][5],f[21893][5]; inline ll F(int x,int j){ int i; ll re=0; for(i=n;~i;i--) re=(re*x+a[i][j])%prime[j]; return re; } inline void Input(int x){ static char s[10100]; int i,j; bool flag=false; scanf("%s",s+1); for(i=1;s[i];i++){ if(s[i]=='-')flag=true; else for(j=0;j<5;j++) a[x][j]=((a[x][j]<<1)+(a[x][j]<<3)+s[i]-'0')%prime[j]; } if(flag)for(j=0;j<5;j++)a[x][j]=prime[j]-a[x][j]; } int main(){ int i,j; cin>>n>>m; for(i=0;i<=n;i++) Input(i); for(j=0;j<5;j++) for(i=0;i<prime[j];i++) f[i][j]=F(i,j); for(i=1;i<=m;i++){ for(j=0;j<5;j++) if(f[i%prime[j]][j])break; if(j==5)stack[++top]=i; } cout<<top<<endl; for(i=1;i<=top;i++)printf("%d\n",stack[i]); }
- 1
Information
- ID
- 18078
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By