#include<bits/stdc++.h>
using namespace std;
long long s[300];
long long exgcd(long long a,long long b,long long& x,long long& y){
if(!b){
x=1;
y=0;
return a;
}
long long d=exgcd(b,a%b,x,y);
long long t=x;x=y;y=t-a/b*y;
return d;
}
int main(){
long long t,i,a,b,c,d,k,tt,ok;
scanf("%lld",&t);
for(i=1;i<=t;i++)
scanf("%lld",&s[i*2-1]);
for(a=0;a<=10000;a++){
d=exgcd(a+1,10001,b,k);
c=s[3]-a*a*s[1];
if(c%d)continue;
tt=c/d;
b=b*tt%10001;
k*=tt;
ok=1;
for(i=1;i<=t;i++){
s[2*i]=(s[2*i-1]*a+b)%10001;
if(i!=1&&(s[2*i-2]*a+b)%10001!=s[2*i-1]){
ok=0;break;
}
}
if(ok==1){
for(i=1;i<=t;i++)
printf("%lld\n",s[i*2]);
return 0;
}
}
return 0;
}UVA 12169 Disgruntled Judge - NWERC 2008 扩展欧几里得
最新推荐文章于 2021-03-24 18:29:28 发布
本文介绍了一个基于扩展欧几里得算法的应用实例,通过该算法解决了一组特定的数学问题。具体实现中,利用C++编程语言完成了解题过程,并通过一系列计算找到了满足条件的解。
564

被折叠的 条评论
为什么被折叠?



