因为要%10001,所以a与b肯定都在1~10000之内,暴力枚举即可。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cctype>
#define M 10001
#define N 205
using namespace std;
int x[N],T;
int read(){
int ret=0;char ch=getchar();
for (;!isdigit(ch);ch=getchar());
for (;isdigit(ch);ch=getchar())ret=ret*10+ch-'0';
return ret;
}
void work(){
for (int a=0;a<M;a++)
for (int b=0;b<M;b++){
bool ok=true;
for (int i=2;i<=2*T;i+=2){
x[i]=((a*x[i-1])%M+b)%M;
if (i+1<=2*T&&((a*x[i])%M+b)%M!=x[i+1]) {ok=false;break;}
}
if (ok) return;
}
}
int main(){
T=read();
for (int i=1;i<=2*T;i+=2) x[i]=read();
work();
for (int i=2;i<=2*T;i+=2) printf("%d\n",x[i]);
return 0;
}