51nod 1126 求递推序列的第N项 && hdu - 1005 Number Sequence (求周期)

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1126

http://acm.hdu.edu.cn/showproblem.php?pid=1005

注意上面一题和下面一题的区别,上面A,B可能取负数,但是mod跟c++中%是不一样的,mod只会得到非负数,两次跳进这个坑了.

然后就找周期,只要f[i-1]==1&&f[i]==1就可以跳出,然后i-2就是周期,输出n%(i-2)的时候,要注意如果等于0的话,其实n是等于i-2,所以要输出f[i-2]。

还有难道循环节一定是从1 1 开始的?? 

 1 #include<cstdio>
 2 int f[100];
 3 int main()
 4 {
 5     //freopen("a.txt","r",stdin);
 6     int a,b,n,i;
 7     f[1]=f[2]=1;
 8     while(~scanf("%d %d %d",&a,&b,&n))
 9     {
10         if(a==0&&b==0&&n==0) break;
11         for(i=3;i<100;i++)
12         {
13             f[i]=((a*f[i-1]+b*f[i-2])%7+7)%7;
14            // printf("%I64d\n",f[i]);
15             if(f[i]==1&&f[i-1]==1)  break;
16         }
17         f[0]=f[i-2];
18         printf("%d\n",f[n%(i-2)]);
19     }
20     return 0;
21 }

 

posted @ 2015-06-11 11:08  NowAndForever  阅读(375)  评论(0编辑  收藏  举报