记录编号 | 463723 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [NOIP 2014]解方程 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.608 s | ||
提交时间 | 2017-10-24 18:10:57 | 内存使用 | 1.27 MiB | ||
#include<bits/stdc++.h>//好神奇!考场能拿50就上天了qwq #define ll long long using namespace std; int n,m; ll a[10][105],mod[10]={0,10007,13417,16231,19441,22159,27043}; void read(int x){ char ch=getchar(); int f=1; while(!(ch<='9'&&ch>='0')){ if(ch=='-')f=-1; ch=getchar(); } while(ch<='9'&&ch>='0'){ for(int i=1;i<=6;i++){ a[i][x]=a[i][x]*10+ch-'0'; if(a[i][x]>=mod[i]){ a[i][x]%=mod[i]; } }ch=getchar(); } for(int i=1;i<=6;i++)a[i][x]*=f; } int ans; bool book[1000006]; int check(ll x,int z){ ll ans=a[z][n]; for(int i=n-1;i>=1;i--){ ans=(ans*x%mod[z]+a[z][i])%mod[z]; }return ans; } int main() { freopen("equationa.in","r",stdin); freopen("equationa.out","w",stdout); scanf("%d%d",&n,&m);n++; for(int i=1;i<=n;i++){ read(i); } for(ll i=1;i<=min(mod[1],(ll)m);i++){ if(!check(i,1)){ for(int j=i;j<=m;j+=mod[1])book[j]=1,ans++; } } for(ll i=1;i<=m;i++){ if(!book[i])continue; int bo=0; for(int j=2;j<=6;j++){ if(check(i,j)){ bo=1;break; } } if(bo)book[i]=0,ans--; } printf("%d\n",ans); for(int i=1;i<=m;i++)if(book[i])printf("%d\n",i); return 0; }