hdu4549之矩阵快速幂
来源:互联网 发布:淘宝我的仓库在哪里 编辑:程序博客网 时间:2024/05/29 03:41
M斐波那契数列
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 926 Accepted Submission(s): 267
Problem Description
M斐波那契数列F[n]是一种整数数列,它的定义如下:
F[0] = a
F[1] = b
F[n] = F[n-1] * F[n-2] ( n > 1 )
现在给出a, b, n,你能求出F[n]的值吗?
F[0] = a
F[1] = b
F[n] = F[n-1] * F[n-2] ( n > 1 )
现在给出a, b, n,你能求出F[n]的值吗?
Input
输入包含多组测试数据;
每组数据占一行,包含3个整数a, b, n( 0 <= a, b, n <= 10^9 )
每组数据占一行,包含3个整数a, b, n( 0 <= a, b, n <= 10^9 )
Output
对每组测试数据请输出一个整数F[n],由于F[n]可能很大,你只需输出F[n]对1000000007取模后的值即可,每组数据输出一行。
Sample Input
0 1 06 10 2
Sample Output
060
所以只要求a^f(n-2) * b^f(n-1),但是f(n)将非常大(超过64位),这时候就要知道有个费马小定理了:(a^b)%mod =a^( b%(mod-1) )%mod
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<queue>#include<algorithm>#include<map>#include<vector>#include<iomanip>#define INF 99999999using namespace std;const int MAX=10;const int mod=1000000007;__int64 sum[2][2],array[2][2]; void MatrixMult(__int64 a[2][2],__int64 b[2][2]){__int64 c[2][2];c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0];c[0][1]=a[0][0]*b[0][1]+a[0][1]*b[1][1];c[1][0]=a[1][0]*b[0][0]+a[1][1]*b[1][0];c[1][1]=a[1][0]*b[0][1]+a[1][1]*b[1][1];for(int i=0;i<2;++i){for(int j=0;j<2;++j)a[i][j]=c[i][j]%(mod-1);}}int Matrix(int k){array[0][0]=0;array[0][1]=array[1][0]=array[1][1]=1;while(k){if(k&1)MatrixMult(sum,array);MatrixMult(array,array);k>>=1;}return (sum[0][0]+sum[0][1])%(mod-1);}__int64 FastPower(__int64 a,int k){__int64 ans=1;while(k){if(k&1)ans=(ans*a)%mod;a=(a*a)%mod;k>>=1;}return ans;}int main(){__int64 a,b,n;while(cin>>a>>b>>n){if(n<2){printf("%I64d\n",n?b:a);continue;}sum[0][0]=sum[1][1]=1;sum[0][1]=sum[1][0]=0;int i=Matrix(n-2);int j=Matrix(1);printf("%I64d\n",(FastPower(a,i)*FastPower(b,j))%mod);}return 0;}
- hdu4549之矩阵快速幂
- hdu4549 矩阵快速幂
- hdu4549(费马小定律+矩阵快速幂)
- hdu4549 M斐波那契数列(矩阵快速幂)
- HDU4549 M斐波那契数列【矩阵快速幂】
- hdu4549(费马小定理 + 快速幂)
- M斐波那契数列(hdu4549矩阵二分幂+二分快速幂)
- hdu4549——M斐波那契数列(费马小定理+矩阵快速幂)
- hdu4549 M斐波那契数列 (矩阵快速幂+费马小定理)
- HDU4549(欧拉函数+快速幂)
- hdu4549 M斐波那契数列 【矩阵快速幂+快速幂+欧拉函数降次】
- 解题报告:HDU4549 M斐波那契数列 数论三大基础(快速幂+矩阵快速幂+费马小定理)
- hdu4549
- hdu4549
- hdu2157之矩阵快速幂
- HDU3893之矩阵快速幂
- hdu4291之矩阵快速幂
- hdu4565之矩阵快速幂
- 参加工作的第一个月
- volatile
- C语言无名管道实现父子进程间通信
- HDU1879 继续畅通工程 解题报告--prim
- 软件探索(一)
- hdu4549之矩阵快速幂
- 操作系统的五大管理功能
- CentOS 配置防火墙操作实例(启、停、开、闭端口)
- 体验产品模块
- 06-php中的魔术常量
- HDU1301 Jungle Roads 解题报告--prim
- JuliaSet&MandelBulb @ Maya&KK —— 4亿粒子的测试
- 因子和阶乘
- lwip记录1--内存池