hdu 1005 Number Sequence

这个题目跟1021 Fibonacci Again相似很多(都是跟“%”相关的啦),还是每步取余,不过看似n有点大,可能会超时吧(没试。。。)

还来看可爱的“%”,前两个数决定第三个数,对7取余,前两个数可以去0~7,总共49中情况,也就是说49个数以内定会循环

我是考虑了直接从第一个数开始循环,有人会说会不会从中间开始循环。。。这个倒证明,不过第一个开始循环的话包含了中间情况了(主要是懒得想了。。)

  题目传送门

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,i,b,n,f[50]={0},k;
 5     while(scanf("%d%d%d",&a,&b,&n)&&a&&b&&n)
 6     {
 7         f[1]=f[2]=1;
 8         k = 2;
 9         for(i=3;i<=50;i++)
10         {
11             f[i] = (a*f[i-1]+b*f[i-2])%7;
12             if(f[i]==1&&f[i-1]==1)break;
13             k++;        
14         }
15         f[0] = f[k-1];
16         if(n==1||n==2) printf("1\n");
17         else printf("%d\n",f[n%(k-1)]);
18 
19     }
20     return 0;
21 }

 

posted @ 2013-05-10 09:05  飞向梦  阅读(112)  评论(0编辑  收藏  举报