poj 3070 Fibonacci (矩阵快速幂求斐波那契数列的第n项)
来源:互联网 发布:python双击闪退 编辑:程序博客网 时间:2024/06/04 19:48
题意就是用矩阵乘法来求斐波那契数列的第n项的后四位数。如果后四位全为0,则输出0,否则
输出后四位去掉前导0,也。。。就。。。是。。。说。。。输出Fn%10000。
题目说的如此清楚。。我居然还在%和/来找后四位还判断是不是全为0还输出时判断是否为0然后
去掉前导0。o(╯□╰)o
还有矩阵快速幂的幂是0时要特判。
P.S:今天下午就想好今天学一下矩阵乘法方面的知识,这题是我的第一道正式接触矩阵乘法的题,欧耶!
#include<cstdio>#include<iostream>#include<cstring>#define maxn 5using namespace std;const int mod = 10000;int n,q;struct Mat{ int mp[maxn][maxn]; bool operator = (Mat a) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) mp[i][j] = a.mp[i][j]; } }};Mat operator *(Mat a,Mat b){ Mat c; memset(c.mp,0,sizeof(c.mp)); for(int k=0;k<n;k++) { for(int i=0;i<n;i++) { if(a.mp[i][k]<=0) continue; for(int j=0;j<n;j++) { if(b.mp[k][j]<=0) continue; c.mp[i][j] = c.mp[i][j]+(a.mp[i][k]*b.mp[k][j])%mod; if(c.mp[i][j]>mod) c.mp[i][j]-=mod; } } } return c;}Mat operator ^(Mat a,int k){ Mat c; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) c.mp[i][j] = (i==j); } while(k) { if(k&1) c = c*a; a =a*a; k>>=1; } return c;}int main(){ while(scanf("%d",&q)!=EOF) { if(q == -1) break; Mat x; x.mp[0][0] = 0; x.mp[0][1] = 1; x.mp[1][0] = 1; x.mp[1][1] = 1; Mat y; y.mp[0][0] = 0; y.mp[1][0] = 1; Mat z; n = 2; if(!q) { printf("0\n"); continue; } z = x^(q-1); Mat tmp = z*y; printf("%d\n",tmp.mp[1][0]%10000); } return 0;}
0 0
- poj 3070 Fibonacci (矩阵快速幂求斐波那契数列的第n项)
- POJ 3070-Fibonacci(矩阵快速幂求斐波那契数列)
- 矩阵快速模幂 + 求斐波那契数列第n项(Fibonacci)
- 二分法矩阵求斐波那契(fibonacci)数列第n项
- 矩阵快速幂求斐波那契数列第n项
- (Relax 矩阵快速幂1.1)POJ 3070 Fibonacci(求第n个斐波那契数的后四位。n很大)
- poj3070 Fibonacci 斐波那契数列的第n项的矩阵求法
- poj 3070 Fibonacci 【矩阵快速幂 求第N个斐波那契数%1000】
- 求斐波那契 (Fibonacci) 数列第 n 项的算法
- 求斐波那契 (Fibonacci) 数列第 n 项的算法
- 快速求斐波那契数列第n项值 poj3070 Fibonacci
- 51nod 1242 斐波那契数列的第N项(矩阵快速幂)
- 51nod 1242 斐波那契数列的第N项【矩阵快速幂】
- 51nod 1242 斐波那契数列的第N项 (矩阵快速幂)
- 【51Nod】1242 - 斐波那契数列的第N项(矩阵快速幂)
- 51nod 1242 斐波那契数列的第N项(矩阵快速幂)
- 51Nod-斐波那契数列的第N项(矩阵快速幂)
- 矩阵快速幂1242斐波那契数列的第N项
- 剑指Offer30最小的k个数
- Mysql数据库修改大小写敏感性问题
- 成为优秀程序员的十个有效方法
- 嵌入式linux开发
- [JZOJ 1281]旅行
- poj 3070 Fibonacci (矩阵快速幂求斐波那契数列的第n项)
- Activity 视图相关类 4.4
- UML九类图
- Android调试之tombstone信息的分析
- 双链表&链表合并&多项式相加算法
- CodeFroces 445B DZY Loves Chemistry
- Sort List LeetCode
- iOS音频播放 (一):概述 转
- poj 2540 && uva 10084 Hotter Colder(半平面交)