POJ 3070 Fibonacci (矩阵快速幂)
来源:互联网 发布:哪里有淘宝教学视频 编辑:程序博客网 时间:2024/06/07 20:34
这里有提供了一种求解斐波那契的高效方法,矩阵来求.
结果对10000取余
099999999991000000000-1
Sample Output
0346266875
同上一题目.只不过f1,f2是任意的,注意n==0时的特判
#include<iostream>#include<cstdio>#include<cstring>#define mod 10000#define LL long longusing namespace std;struct node{ LL Map[4][4];};LL a,b,c,d,f1,f2,n;node mul(node a,node b){ node tmp; for(int i=0;i<3;i++) for(int j=0;j<3;j++) { tmp.Map[i][j]=0; for(int k=0;k<3;k++) { tmp.Map[i][j]+=a.Map[i][k]*b.Map[k][j]; tmp.Map[i][j]%=mod; } } return tmp;}node qp(node a,LL n){ node tmp={1,0,0,0,1,0,0,0,1}; while(n) { if(n&1) tmp=mul(tmp,a); a=mul(a,a); n=n>>1; } return tmp;}int main(){ while(~scanf("%lld",&n)) { if(n==0) { printf("0\n");continue; } if(n==-1) break; node arr,arr2; memset(arr.Map,0,sizeof(arr.Map)); memset(arr2.Map,0,sizeof(arr2.Map)); arr.Map[0][0]=1;arr.Map[2][0]=1; arr2.Map[0][0]=1;arr2.Map[0][1]=1; arr2.Map[1][0]=arr2.Map[2][2]=1; node p=qp(arr2,n-1); p=mul(p,arr); printf("%lld\n",p.Map[0][0]); } return 0;}
0 0
- POJ 3070 Fibonacci 矩阵快速幂
- poj - 3070 - Fibonacci(矩阵快速幂)
- 矩阵快速幂 Fibonacci 3070 poj
- POJ 3070 Fibonacci (矩阵快速幂)
- poj 3070 Fibonacci (矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci 矩阵快速幂
- POJ 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci(矩阵快速幂)
- POJ-3070 Fibonacci 矩阵快速幂
- Fibonacci - POJ 3070 矩阵乘法快速幂
- poj 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci 矩阵快速幂
- POJ 3070 Fibonacci(矩阵快速幂)
- POJ 3070 Fibonacci(矩阵快速幂)
- poj 3070 Fibonacci 矩阵快速幂
- poj 3070 Fibonacci 【矩阵快速幂】
- POJ 3070 Fibonacci.(矩阵快速幂)
- js中判断是ie的几种方法
- iOS开发--UITableViewCell侧滑多个按钮(系统仅支持iOS8以上)
- Hystrix 使用与分析
- JDBC 链接oracle数据库(toad oci连接在64位解决办法)
- iOS开发43-iOS Swift常量和变量
- POJ 3070 Fibonacci (矩阵快速幂)
- 分享植物需水量预测模型(主成分分析、BP神经网络、加速遗传算法)
- postgres install
- centos、debian下安装开发者工具包
- cmake安装遇到问题总结
- 一种导致UITextView输入中文却先输入拼音的解决思路
- 解决oracle乱码问题
- 我的树洞
- UML总结(一)_THE END