【UVa】[11582]Colossal Fibonacci Numbers!
2016-04-24 18:26
501 查看
涉及 快速幂取模
根据斐波那契数列取模之后的规律性
可解得
#include<stdio.h> int b[1000020]; int pow_mod(unsigned long long a,unsigned long long b,int m) { if(b==0) return 1; int x=pow_mod(a,b/2,m); unsigned long long res=(unsigned long long)x*x%m; if(b&1) res=res*a%m; return (int)res; } int main() { // a[0]=0; // a[1]=1; // for(int i=2; i<1000020; i++) { // a[i]=a[i-1]+a[i-2]; // } int T; scanf("%d",&T); while(T--) { unsigned long long n,m; int k; scanf("%llu %llu %d",&n,&m,&k); if(n==0||k==1) { printf("0\n"); continue; } int cnt=0; b[0]=0; b[1]=1; for(int i=2; ; i++) { b[i]=b[i-1]+b[i-2]; b[i]%=k; if(b[i]==1&&b[i-1]==0) { cnt=i-1; break; } } int t=pow_mod(n%cnt,m,cnt); printf("%d\n",b[t]); } return 0; }
【UVa】[11582]Colossal Fibonacci Numbers!
相关文章推荐
- php实现斐波那契数列的简单写法
- 漫谈递归:从斐波那契开始了解尾递归
- 漫谈递归:递归需要满足的两个条件
- 1.10055 - Hashmat the brave warrior
- 2.10071 - Back to High School Physics
- 3.458 - The Decoder
- 4.694 - The Collatz Sequence
- 6.494 - Kindergarten Counting Game
- 7.490 - Rotating Sentences
- 8.414 - Machined Surfaces
- 9.488 - Triangle Wave
- A.457 - Linear Cellular Automata
- B.489 - Hangman Judge
- C.445 - Marvelous Mazes
- 1.10494 - If We Were a Child Again
- 2.424 - Integer Inquiry
- 3.10250 - The Other Two Trees
- 5.465 - Overflow
- 6.113 - Power of Cryptography
- 7.10161 - Ant on a Chessboard