HDU1005
题解:
一道循环规律题。既然是模7,那么有49种组合。在[3,49]内枚举,如果重现了f[1]和f[2],那么就是一个循环。
代码:
#include <bits/stdc++.h>
using namespace std;
int const MOD = 7;
int const N = 60;
int n,a,b;
int f[N] = {0,1,1};
int main(){
while(~scanf("%d%d%d",&a,&b,&n)){
if(!a && !b && !n) break;
int i;
for(i=3;i<50;i++){
f[i] = (a * f[i-1] + b * f[i-2]) % MOD;
if(f[i] == 1 && f[i-1] == 1) break; //循环的长度为i-2
}
n = n % (i-2);
if(n == 0) printf("%d\n",f[i-2]); //最后一个
else printf("%d\n",f[n]);
}
return 0;
}