HDU 1005 Number Sequence
2010-07-09 14:24
369 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1005
f[1]=1,f[2]=1,f
=(A*f[n-1]+B*f[n-2])%7 (1 <= A, B <= 1000, 1 <= n <= 100,000,000).
n这么大,暴力是肯定TLE了.
1。由题目的式子可知0<=f
<=6,
2。而每个f
又是由(f[n-1],f[n-2])这个组合通过计算得出来的,
由以上两点可以推出,(f[n-1],f[n-2])出现重复的组合的最大周期为7*7=49, 即f
的最大周期
所有, 我们只要算出一个周期中所有的f
的值并记录下周期i即可.
f[1]=1,f[2]=1,f
=(A*f[n-1]+B*f[n-2])%7 (1 <= A, B <= 1000, 1 <= n <= 100,000,000).
n这么大,暴力是肯定TLE了.
1。由题目的式子可知0<=f
<=6,
2。而每个f
又是由(f[n-1],f[n-2])这个组合通过计算得出来的,
由以上两点可以推出,(f[n-1],f[n-2])出现重复的组合的最大周期为7*7=49, 即f
的最大周期
所有, 我们只要算出一个周期中所有的f
的值并记录下周期i即可.
#include<stdio.h> int main() { int a,b,n,i,f[53]; while(scanf("%d%d%d",&a,&b,&n)!=EOF) { if(a==0 && b==0 && n==0) break; if(n==1 || n==2) { puts("1"); continue; } f[1]=1,f[2]=1; a%=7,b%=7; for(i=3;i<=52;i++) { f[i]=(a*f[i-1]+b*f[i-2])%7; if(f[i-1]==1 && f[i]==1) break; } i-=2; n%=i; f[0]=f[i]; printf("%d/n",f ); } return 0; }
相关文章推荐
- hdu 1005 Number Sequence(循环节)
- HDU-1005 Number Sequence
- HDU—— 1005 Number Sequence
- hdu 1005 Number Sequence
- hdu 1005 Number Sequence
- HDU 1005 Number Sequence(数论)
- hdu 1005 Number Sequence 矩阵乘法
- hdu 1005 number sequence
- HDU 1005 Number Sequence【循环节(取模)】
- HDU 1005 Number Sequence
- 【HDU】-1005-Number Sequence(数学,规律)
- HDU 1005 Number Sequence
- hdu 1005 Number Sequence
- HDU 1005 Number Sequence
- HDU 1005 Number Sequence 打表找循环节
- HDU 1005 Number Sequence 找循环位置
- HDU 1005 Number Sequence
- hdu 1005 Number Sequence
- HDU-1005- Number Sequence (矩阵快速幂)
- HDU 1005 Number Sequence