https://vjudge.net/problem/UVA-12169
题意:
输入T,x1,x2,x3,...,x2T-1,输出x2,x4,...,x2T。
递推公式为xi=(axi-1+b)mod10001。
思路:
暴力枚举a和b,利用递推公式计算,只需要判断是否和输入矛盾即可。
1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <vector> 5 #include <queue> 6 #include <cmath> 7 using namespace std; 8 9 10 const int maxn = 10000 + 5; 11 12 int t; 13 int x[maxn]; 14 15 void solve() 16 { 17 for (int a = 0; a <= 10000; a++) 18 { 19 for (int b = 0; b <= 10000; b++) 20 { 21 bool flag = true; 22 for (int i = 2; i <= 2 * t; i++) 23 { 24 int k = (a*x[i - 1] + b) % 10001; 25 if (i % 2==0) x[i] = k; 26 if (i%2 && x[i] != k) 27 { 28 flag = false; 29 break; 30 } 31 } 32 if (flag) return; 33 } 34 } 35 } 36 37 int main() 38 { 39 //freopen("D:\input.txt", "r", stdin); 40 while (~scanf("%d", &t)) 41 { 42 for (int i = 1; i <= 2 * t - 1; i += 2) 43 scanf("%d", &x[i]); 44 solve(); 45 for (int i = 2; i <= 2 * t; i += 2) 46 printf("%d ",x[i]); 47 } 48 }