HDU 1005 Number Sequence

解题报告:

题目大意:

f[1]=f[2]=1;f[n]=(A*f[n-1]+B*f[n-2])%7

建议还没有做这道题的人就不要花时间了,这题纯属一道坑爹的题,测试数据很多问题,并且已经有大神证明过这道题在逻辑上就有错误,但是这里还是说一下解题思路。

这道题数据量较大,有如果把1到n都算出来的话显然会TLE,所以得避开这个,我们可以发现f[n]的结果会呈现一个周期,所以我们只要算出一个周期内的f[n]就可以了,至于周期

是多少这里就不说了。。。。

 1 #include<cstdio>
 2 int a[100005];
 3 int main() {
 4     int A,B,N;
 5     a[1]=a[2]=1;
 6     while(scanf("%d%d%d",&A,&B,&N)&&(A||B||N)) {
 7         for(int i=3;i<=48;++i)
 8         a[i]=(A*a[i-1]+B*a[i-2])%7;
 9         printf("%d\n",a[N%48]);
10     }
11     return 0;
12 }
View Code
原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3082531.html