【题目分析】
拓展欧几里得
【代码】
#include <cstdio>
#include <cmath>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;
const int mod=10001;
int n,p,q,d,b;
int f[101],g[101];
inline void exgcd(int a,int b,int & d,int & x,int & y)
{
if (b==0) {x=1;y=0;d=a;return;}
exgcd(b,a%b,d,y,x);
y-=x*(a/b);
}
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;++i) scanf("%d",&f[i]);
for (int a=0;a<mod;++a)
{
exgcd(a+1,mod,d,p,q);
if (((ll)f[2]-(ll)a*a*f[1])%d) continue;
b=(p*((ll)f[2]-(ll)a*a*f[1])/d)%mod;
int can=1;
g[1]=(f[1]*a+b)%mod;
for (int i=2;i<=n;++i)
{
if (f[i]!=(g[i-1]*a+b)%mod)
{
can=0;
break;
}
g[i]=(f[i]*a+b)%mod;
}
if (can)
{for (int i=1;i<=n;++i) printf("%d\n",g[i]); return 0; }
}
}