poj 3070+hdu1005(斐波那契 矩阵)
来源:互联网 发布:java网上购物系统源码 编辑:程序博客网 时间:2024/06/10 03:51
真是神奇的斐波那契有这样的矩阵关系
f[0]=0;f[1]=1;f[2]=1;f[3]=2......
初始为单位矩阵即可;
题目链接:http://poj.org/problem?id=3070
#include<cstdio>#include<cstring>using namespace std;const int mod=10000;struct node{ int map[2][2];}q,c;void init(node &a){ a.map[0][0]=a.map[1][1]=1; a.map[0][1]=a.map[1][0]=0; c.map[0][0]=c.map[0][1]=c.map[1][0]=1; c.map[1][1]=0;}node mul(node a,node b){ int i,j,k; node c; memset(c.map,0,sizeof(c.map)); for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++) c.map[i][j]=(c.map[i][j]+(a.map[i][k]*b.map[k][j]))%mod; return c;}int main(){ int k; while(scanf("%d",&k)!=EOF) { if(k==-1) break; init(q); while(k>0) { if(k&1) q=mul(q,c); c=mul(c,c); k=k/2; } printf("%d\n",q.map[0][1]); } return 0;}
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005
思路:只在相乘的矩阵中稍作修改即可
注意:此题的初始状态不可直接设置为单位矩阵,所以在代码中做了特判
#include<cstdio>#include<cstring>using namespace std;const int mod=7;struct node{ int map[2][2];}q,c;void init(int a,int b){ q.map[0][0]=a+b; q.map[1][1]=1; q.map[0][1]=1; q.map[1][0]=1; c.map[0][0]=a; c.map[0][1]=1; c.map[1][0]=b; c.map[1][1]=0;}node mul(node a,node b){ int i,j,k; node c; memset(c.map,0,sizeof(c.map)); for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++) c.map[i][j]=(c.map[i][j]+(a.map[i][k]*b.map[k][j]))%mod; return c;}int main(){ int a,b,k; while(scanf("%d%d%d",&a,&b,&k)!=EOF) { if(a==0&&b==0&&k==0) break; if(k<3) { printf("1\n"); continue; } else if(k==3) { printf("%d\n",a+b); continue; } else { k-=2; init(a,b); while(k>0) { if(k&1) q=mul(q,c); c=mul(c,c); k=k/2; } printf("%d\n",q.map[0][1]); } } return 0;}
0 0
- poj 3070+hdu1005(斐波那契 矩阵)
- hdu1005(矩阵加速)
- POJ 3070 斐波那契数列(矩阵快速幂(版题))
- POJ - 3070 - Fibonacci (矩阵快速幂 + 斐波那契数列)
- poj 3070-Fibonacci (矩阵快速幂 求 斐波那契数列)
- poj 3070 Fibonacci(矩阵快速幂模板,斐波那契)
- HDU1005(矩阵快速幂)
- POJ 3070 (矩阵快速幂,矩阵快速幂求斐波那契)
- poj-3070 Fibonacci(矩阵快速幂 + 斐波那契数列)
- POJ 3070 (矩阵快速幂 ——斐波那契数列)
- 矩阵快速幂优化递推式 例:斐波那契数列 poj 3070
- [POJ](3070)Fibonacci ---矩阵快速幂与斐波那契
- 斐波那契矩阵
- 斐波那契矩阵
- POJ 3070 矩阵快速幂求斐波那契数列
- POJ 3070-Fibonacci(矩阵快速幂求斐波那契数列)
- HDU1005 - Number Sequence (矩阵快速幂)
- poj 3070 斐波那契数列
- struct--------构造函数对结构体初始化的影响
- CDHtmlDialog 显示网页前修改网页源码的方法
- android 调用系统前置摄像头
- MYSQL数据库表的引擎-1 (特性详解)
- css的IE兼容性判断
- poj 3070+hdu1005(斐波那契 矩阵)
- ECharts + Yahoo Pure + HawtIO
- 昨晚看《天才知道》3进2的一个java基础题目有感:java是一种跨平台语言,它组成的2个部分是什么
- GPS开发----临近警告
- 刘宇凡:论挤公交不刷卡的行为
- CentOS 6.5 Linux系统安全初始化脚本
- openCV Canny边缘检测
- Cocos2d-xv3.x屏蔽下层触摸
- std::vector用法