1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include<cstdio> typedef long long LL; using namespace std; const int maxn=210; LL x[maxn]; void exgcd(LL a,LL b,LL& d,LL& x,LL& y){ if(!b) d=a,x=1,y=0; else exgcd(b,a%b,d,y,x),y-=x*(a/b); } int main(){ int t;scanf("%d",&t); for(int i=0;i<t;++i) scanf("%lld",&x[2*i]); t<<=1; for(LL a=0;;++a){ LL k,b,d,tmp=x[2]-a*a*x[0]; exgcd(10001,a+1,d,k,b); if(tmp%d) continue; b=b*tmp/d; bool flag=true; for(int i=1;i<t;++i){ if(i&1) x[i]=(a*x[i-1]+b)%10001; else { if(x[i]!=(a*x[i-1]+b)%10001){ flag=false; break; } } } if(flag) break; } t>>=1; for(int i=0;i<t;++i) printf("%lld\n",x[2*i+1]); return 0; }
|