UVa11582 巨大的斐波那契数 循环节计算+快速幂
来源:互联网 发布:fms飞机淘宝 编辑:程序博客网 时间:2024/05/19 13:19
The i ’th Fibonacci number f(i) is recursively defined in the following way:
• f(0) = 0 and f(1) = 1
• f(i + 2) = f(i + 1) + f(i) for every i ≥ 0
Your task is to compute some values of this sequence.
Input
Input begins with an integer t ≤10, 000,
the number of test cases.
Each test case consists of three integers a, b, n
where 0 ≤ a, b < 2^64(a and b will not both be zero)
and 1 ≤ n ≤ 1000.
Output
For each test case, output a single line containing the remainder of f(a^b) upon division by n.
Sample Input
3
1 1 2
2 3 1000
18446744073709551615 18446744073709551615 1000
Sample Output
1
21
250
首先如果出现f[i]=f[1]&&f[i-1]=f[0]则出现循环,
而对n的模数只有n种可能,故n^2内便出现循环。
故,先求出循环节M,
再求a^b%M,快速幂即可。
#include <iostream>#include <cstdio>#include <map>#include <cmath>#include <algorithm>#include <cstring>#include <string>#include<cassert>using namespace std;#define LL unsigned long long#define maxn 1010int f[maxn*maxn];int quickpow(LL m,LL n,int k){ int b=1; while(n>0) { if(n&1){ b=(b*m)%k; } n=n>>1; m=(m*m)%k; } return b;}int main() { int n,t,m,M; LL a,b; scanf("%d",&t); while(t--){ scanf("%llu%llu%d",&a,&b,&n); if(n==1||a==0){ printf("0\n"); } else{ f[0]=0; f[1]=1; m=n*n+10; for(int i=2;i<=m;i++){ f[i]=(f[i-1]+f[i-2])%n; if(f[i]==f[1]&&f[i-1]==f[0]){ M=i-1; break; } } int k=quickpow(a%M,b,M); printf("%d\n",f[k]); } } return 0;}
0 0
- UVa11582 巨大的斐波那契数 循环节计算+快速幂
- uva11582 巨大的斐波那契数!
- UVa11582 巨大的斐波那契数
- UVA11582 巨大的斐波那契数!
- UVa11582 巨大的斐波那契数列 (快速幂 同余数与模运算)
- 例题10-1 巨大的斐波那契数! UVa11582
- UVa11582 巨大的斐波那契数列
- UVA11582 求很大的斐波那契 快速幂膜
- Uva11582 Colossal Fibonacci Numbers! (数论、斐波那契循环节)
- 巨大的斐波那契数 uva1582
- 51nod 巨大的斐波那契数列(矩阵快速幂),递推式优化的好模板!!!!!!!
- Colossal Fibonacci Numbers! 巨大的斐波那契数 UVA
- UVa 11582 巨大斐波那契数列 (预处理 + 快速幂)
- UVA 11582 巨大数的斐波那契数列 (大数取模,幂取模,模的计算方法)
- UVA11582 幂取模,快速幂
- UVa11582 Colossal Fibonacci Numbers!(斐波那契数列小规律+思维)
- hdu 5451 Best Solver -广义斐波那契+矩阵快速幂+共轭构造+循环节
- uva11582 斐波拉切数列循环节+欧拉定理降幂
- 内存分析工具 MAT 的使用
- Mac 10.11 android6.0源码编译
- 文章标题
- Ubuntu16虚拟机调整窗口大小自适应windows7
- Java程序员不要错过的7款新工具
- UVa11582 巨大的斐波那契数 循环节计算+快速幂
- MySQL读书笔记-并发控制
- Raspberry Pi 3安装配置Raspbian过程
- PAT乙级练习题B1044. 火星数字
- STL序列式容器之list(双向链表)
- 【一天一道LeetCode】#371. Sum of Two Integers
- 使用java.util.concurrent包处理多线程
- HTML-预文本格式&计算机输出标签
- 根据悍马病毒小结android病毒如何提取root权限