题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1005f[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;
}