hdu 1005
http://acm.hdu.edu.cn/showproblem.php?pid=1005
思路:
对于f[i-1],f[i-2]可能出现的数都可能是0,1,2,3,4,5,6这七个数中的一个,所以最大的周期就为7*7=49。这儿就把所有49当为周期计算,不加其他的处理啦
代码:
1 #include<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 int f[55]; 7 int A,B,n; 8 while(scanf("%d%d%d",&A,&B,&n)) 9 { 10 if(A==0&&B==0&&n==0) break; 11 n=n%49;//计算出n在一个循环中处于第几个数 12 if(n==0) n=49;//如果n=0,则为第49的一个数 13 f[1]=1; 14 f[2]=1; 15 for(int i=3;i<=n;i++) 16 { 17 f[i]=(((A%7)*f[i-1])%7+((B%7)*f[i-2])%7)%7; 18 } 19 printf("%d\n",f[n]); 20 } 21 return 0; 22 }