uva 12169
1 2 /* 不爽的裁判_________________________________________________________________________________ 3 4 #include <iostream> 5 #include <map> 6 #include <cmath> 7 #include <vector> 8 #include <cstdio> 9 #include <string> 10 #include <cstring> 11 #include <algorithm> 12 using namespace std; 13 #define fir first 14 #define sec second 15 #define pb(x) push_back(x) 16 #define mem(A, X) memset(A, X, sizeof A) 17 #define REP(i,l,u) for(int (i)=(int)(l);(i)<=(int)(u);++(i)) 18 #define rep(i,l,u) for(int (i)=(int)(l);(i)>=(int)(u);--(i)) 19 #define foreach(e,x) for(__typeof(x.begin()) e=x.begin();e!=x.end();++e) 20 typedef long long LL; 21 typedef unsigned long long ull; 22 typedef pair<long,long> pll; 23 24 25 LL T,n; 26 const int mod=1e9+7; 27 const int maxn=1e5+10; 28 const int maxt=200+10; 29 const int num=10001; 30 int x[maxt]; 31 int main() 32 { 33 freopen("in.txt","r",stdin); 34 //while(cin>>n) 35 while(cin>>T) 36 { 37 REP(i,1,T) 38 { 39 cin>>x[2*i-1]; 40 } 41 REP(a,0,num-1) 42 { 43 int flag; 44 REP(b,0,num-1) 45 { 46 flag=1; 47 REP(i,2,2*T) 48 { 49 int t=( a * x[i-1] + b ) % num; 50 if(i&1 && x[i]!=t ) { flag=0; break; } //校验奇数位置 51 else {x[i]=t;} 52 } 53 if(flag) {break;} 54 } 55 if(flag) break; 56 } 57 REP(i,1,T) 58 { 59 60 cout<<x[2*i]<<endl; 61 } 62 } 63 return 0; 64 } 65 66 /* 67 note : 考虑解的所有可能情况,先这样直接进行分析一次. 68 debug : 思路是对的,没有想到的是 三重循环,中间跳出循环的时候只跳出了第二重,第三重循环引发了值的改变. 69 optimize: 70 */