斐波那契矩阵
来源:互联网 发布:开淘宝店卖土特产 编辑:程序博客网 时间:2024/06/06 06:58
//0,1起始的斐波那契数列#include<stdio.h>const int MOD=1e9+7;struct matrix{ int x,y,**s; void init(const int &a,const int &b){ x=a;y=b; s=new int*[a]; for(int i=0;i<a;i++){ s[i]=new int[b]; } }};void mat_multi(const matrix m1,const matrix m2,matrix &m3){ m3.init(m1.x,m2.y); for(int i=0;i<m1.x;i++){ for(int j=0;j<m2.y;j++){ m3.s[i][j]=0; for(int k=0;k<m1.y;k++){ m3.s[i][j]+=m1.s[i][k]*m2.s[k][j]; } } }}void mat_input(matrix &m){ int dx,dy; scanf("%d%d",&dx,&dy); m.init(dx,dy); for(int i=0;i<m.x;i++){ for(int j=0;j<m.y;j++){ scanf("%d",&m.s[i][j]); } }}int mat_print(const matrix &m){ for(int i=0;i<m.x;i++){ for(int j=0;j<m.y;j++){ printf("%d ",m.s[i][j]); } putchar('\n'); }}matrix mat_pow(matrix mx,const int k){ if(k==1)return mx; matrix mt; mt.init(2,2); mat_multi(mat_pow(mx,k/2),mat_pow(mx,k/2),mt); if(k&1) mat_multi(mt,mx,mt); return mt;}int main(){ int a,b,k; scanf("%d%d%d",&a,&b,&k); matrix M,m0; M.init(1,2); M.s[0][0]=a; M.s[0][1]=b; m0.init(2,2); m0.s[0][0]=m0.s[0][1]=m0.s[1][0]=1; m0.s[1][1]=0; m0=mat_pow(m0,k); mat_multi(M,m0,M); printf("%d",M.s[0][1]);}
//测试组#include<stdio.h>const int MOD=1e9+7;struct matrix{ int x,y,**s; void init(const int &a,const int &b){ x=a;y=b; s=new int*[a]; for(int i=0;i<a;i++){ s[i]=new int[b]; } }};void mat_multi(const matrix m1,const matrix m2,matrix &m3){ m3.init(m1.x,m2.y); for(int i=0;i<m1.x;i++){ for(int j=0;j<m2.y;j++){ m3.s[i][j]=0; for(int k=0;k<m1.y;k++){ m3.s[i][j]+=m1.s[i][k]*m2.s[k][j]; } } }}void mat_input(matrix &m){ int dx,dy; scanf("%d%d",&dx,&dy); m.init(dx,dy); for(int i=0;i<m.x;i++){ for(int j=0;j<m.y;j++){ scanf("%d",&m.s[i][j]); } }}int mat_print(const matrix &m){ for(int i=0;i<m.x;i++){ for(int j=0;j<m.y;j++){ printf("%d ",m.s[i][j]); } putchar('\n'); }}matrix mat_pow(matrix mx,const int k){ if(k==1)return mx; matrix mt; mt.init(2,2); mat_multi(mat_pow(mx,k/2),mat_pow(mx,k/2),mt); if(k&1) mat_multi(mt,mx,mt); return mt;}void std_fib(int a,int b,int k){ int u=a,v=b; while((k--)>0){ printf("%d ",u);u+=v; if((k--)>0){ printf("%d ",v);v+=u; } } printf("\n");}int main(){ int a,b,k0; scanf("%d%d%d",&a,&b,&k0); for(int k=1;k<=k0;k++){ matrix M,m0; M.init(1,2); M.s[0][0]=a; M.s[0][1]=b; m0.init(2,2); m0.s[0][0]=m0.s[0][1]=m0.s[1][0]=1; m0.s[1][1]=0; m0=mat_pow(m0,k); mat_multi(M,m0,M); printf("%d ",M.s[0][1]); } printf("\n"); std_fib(a,b,k0);}
阅读全文
0 0
- 斐波那契矩阵
- 斐波那契矩阵
- 矩阵-斐波那契数列
- 矩阵专题:斐波那契数列
- 矩阵-斐波那契数列
- 斐波那契数列-矩阵乘法
- 斐波那契_矩阵乘法
- 矩阵与斐波那契数列
- 矩阵乘法与斐波那契
- HDU3519 斐波那契数列+矩阵幂
- 矩阵链乘+斐波那契+快速幂 专题
- hdu 4549 M斐波那契数列 数论 矩阵
- ccsu 1042 斐波那契II 矩阵快速幂
- HDU 3936 斐波那契性质矩阵连乘
- hdu3117(斐波那契数列+矩阵快速幂)
- 矩阵在计算斐波那契数列的运用
- 斐波那契的矩阵快速幂
- hdu 3117矩阵+斐波那契数列
- dubbo入门简介
- lua 对象与 c++对象及互调
- 经典C语言编程注意点
- iOS11正式版要来了!这些iPhone请慎重升级!
- 算法题--合并两个排序的链表
- 斐波那契矩阵
- XML的学习笔记(一)————基本语法和规范
- POJ
- PHPer一枚
- 【AI】Java+Fileupload+JSTL+Face++实现人脸识别系统
- TCP序列号和确认号
- [Angularjs]ng-file-upload上传文件
- 怎样JAVA学习不走弯路
- 文章标题