3070 Fibonacci 矩阵快速幂
2015-08-06 13:49
232 查看
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int m=10000; int fib(int n) { int t[2][2]={1,1,1,0}; int p[2][2]; int a[2][2]={1,0,0,1}; int i,j,k; while(n) { if(n%2==1) { for(i=0;i<2;i++) for(j=0;j<2;j++) { p[i][j]=a[i][j]%m; a[i][j]=0; } for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++) a[i][j]=a[i][j]+p[i][k]*t[k][j]; } for(i=0;i<2;i++) for(j=0;j<2;j++) { p[i][j]=t[i][j]%m; t[i][j]=0; } for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++) t[i][j]=(t[i][j]+p[i][k]*p[k][j])%m; n=n>>1; } return a[0][1]; } int main() { int n; while(~scanf("%d",&n)) { if(n==-1) break; printf("%d\n",fib(n)%m); } return 0; }
相关文章推荐
- [LeetCode] Binary Tree Inorder Traversal
- 第三题
- 【C++】二维数组中的查找
- NSIS 附加快捷方式到开始菜单、桌面、任务栏
- linux下挂载文件系统
- 48、android代码架构总结
- 在C#中使用NPOI2.0操作Excel2003和Excel2007
- preventDefault stopPropagation??
- Android之高仿手机QQ图案解锁
- 关于一个公司的产品、技术、运营的一点领悟
- 主流手机分辨率 尺寸 操作系统
- 开篇
- 在线检测网页在各种浏览器的打开效果_[转载]
- jQuery日常使用1
- J2EE及EJB的介绍
- JS封装的几个位操作函数和16进制操作函数
- WebStorm 10.0.4 安装在window 10下,Terminal无法输入的问题
- Git 使用规范流程
- python 批量重命名
- Aggregation聚合函数--grouping,grouping_id,grouping set,cube,rollup