题目大意
给出x1,a,b,定义xi=(a*xi-1+b)%10001。给出t,x1,x3。。。x2t-1,输出x2,x4。。。x2t(t小于等于100,x小于10001)。
解析
若知a,b即可向下推xn,因为要%10001,所以a,b在0到10000之间,固枚举a,b。暴力硬解即可,时间大约是380ms。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int al[1001],t,b,j,x;
memset(al,0,sizeof(al));
scanf("%d",&t);
for(int i=1;i<=t;i++)
scanf("%d",&al[i*2-1]);
for(int a=0;a<=10000;a++){
for(int b=0;b<=10000;b++){
x=1;
for(j=2;j<=2*t;j++){
if(j%2==1){
if(al[j]!=((a*al[j-1]+b)%10001)){
x=0;
break;
}
}
else al[j]=(a*al[j-1]+b)%10001;
}
if(x==1)
break;
}
if(x==1)
break;
}
for(int i=1;i<=t;i++)
printf("%d\n",al[i*2]);
return 0;
}