HDU 1005 Number Sequence

2019-04-13 13:46发布

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1005 f[n]模7的余数在0~6,且与f[n-1]和f[n-2]模7的余数有关。f[n-1]和f[n-2]模7余数的组合不超过49种,由鸽巢原理知,f[n]的模7余数出现的周期不超过49。在我的代码中,我定义了一个f[51]的数组(我不会说我之前定义为f[52],在for循环里设置终止条件为i<52一直wa的,找了好久才发现问题所在的大哭),使用循环找出周期,然后计算就方便多啦。 以下是AC的代码: #include using namespace std; int main(){ int f[51], A, B, T, n, i; f[1] = f[2] = 1; while (cin >> A >> B >> n , A || B || n){ for(i=3;i<51;i++){ f[i] = (A*f[i - 1] + B*f[i - 2]) % 7; if (f[i]==1&&f[i-1]==1) { break; } if (i == n){ cout << f[i] << endl; break; } } if(i!=n){ T = i - 2; f[0] = f[T]; cout << f[n%T] << endl; } } return 0; }