使用了模运算后,数字的范围不会超过模
这道题目可以首先估计时间复杂度,由于要枚举a,b,最多有100000000种情况,而每种情况最多需要计算T次,基本上算是一个o(N)的算法,时间上足够了
//我自己的思路是枚举所有的a 和 b//原来汝佳也是这么做的#include#include using namespace std;const int maxn = 250;int seq[maxn];int T;int M = 10001;void compute(){ for(int a = 0;a <= 10000;a++) { for(int b = 0;b <= 10000;b++) { int len = 2 * T; int ok = 1; for(int i = 2;i <= len;i = i + 2) { seq[i] = (a * seq[i - 1] + b) % M; if((i + 1 < len) && seq[i + 1] != (a * seq[i] + b) % M) { ok = 0; break; } } if(ok) return ; } }}int main(){ while(cin>>T) { memset(seq,0,sizeof(seq)); for(int i = 1;i <= 2 * T;i = i + 2) { cin>>seq[i]; } compute(); for(int i = 2;i <= 2 * T;i = i + 2) { cout< <