HIT OJ 2060 Fibonacci Problem Again(矩阵快速幂)
来源:互联网 发布:淘宝扣分处罚节点 编辑:程序博客网 时间:2024/05/19 15:19
传送门:HIT 2060
题意:求斐波那契数列中第a项到第b项的和。注:f[0]=1。
题解:直接模版。
代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <vector>#include <set>#include <map>using namespace std;const int MAX=2;const long long MOD=1000000000;typedef struct{ long long m[MAX][MAX];}Matrix;Matrix P={0,1,1,1};Matrix I={1,0,0,1};Matrix matrixmul(Matrix a,Matrix b){ int i,j,k; Matrix c; for(i=0;i<MAX;i++) for(j=0;j<MAX;j++) { c.m[i][j]=0; for(k=0;k<MAX;k++) c.m[i][j]+=(a.m[i][k]*b.m[k][j])%MOD; c.m[i][j]%=MOD; } return c;}Matrix quickpow(int n){ Matrix m=P,b=I; while(n>=1) { if(n&1) b=matrixmul(b,m); n=n>>1; m=matrixmul(m,m); } return b;}int main(){ long long a,b,k1,k2,ans; Matrix fa,fb; while(cin>>a>>b) { if(a==0&&b==0) break; fa=quickpow(a+2-1); fb=quickpow(b+2); k1=(fa.m[0][0]+fa.m[0][1])%MOD; k2=(fb.m[0][0]+fb.m[0][1])%MOD; ans=k2-k1; if(ans<0) ans+=1000000000;//对负数取余,取余后加MOD cout<<ans<<endl; } return 0;}
0 0
- HIT OJ 2060 Fibonacci Problem Again(矩阵快速幂)
- HIT 2060 Fibonacci Problem Again(矩阵乘法)
- HIT OJ 2255 Not Fibonacci (矩阵快速幂)
- HIT 2060 Fibonacci Problem Again
- HIT 2255 Not Fibonacci(矩阵快速幂)
- 哈理工邀请赛 F.Fibonacci Again (矩阵快速幂)
- poj - problem 3070 Fibonacci 【矩阵 +快速幂】
- 【HDOJ 1021】 Fibonacci Again (矩阵快速幂(裸))
- hoj 2060 Fibonacci Problem Again
- Hoj 2060 Fibonacci Problem Again
- 哈尔滨理工大学软件学院ACM程序设计全国邀请赛 F Fibonacci Again (矩阵快速幂)
- Fibonacci(矩阵快速幂)
- 【矩阵快速幂】Fibonacci
- Fibonacci 矩阵快速幂
- Fibonacci 矩阵快速幂
- Fibonacci (矩阵快速幂)
- Fibonacci 快速幂矩阵
- 10299 Problem A: Modular Fibonacci(斐波那契的矩阵快速幂)
- HTML的script
- MTK平台缩写
- jQuery判断checkbox是否选中
- PUTTY永远改变显示风格
- JAVA中String与StringBuffer 、StringBuilder的区别
- HIT OJ 2060 Fibonacci Problem Again(矩阵快速幂)
- popupwindow弹出,父类背景变暗问题
- android 调用系统的接口
- 计算机网路体系结构
- [leetcode] Clone Graph
- “EXC_BAD_INSTRUCTION"异常的问题!
- javascript判断checkbox是否选中
- 老罗的android视频教程
- 判断字符串最后一个字符是否为.号