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 }