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 }

 

posted @ 2014-03-06 16:30  ゐ星落★孤晨ね  阅读(106)  评论(0编辑  收藏  举报