P1962 斐波那契数列
Posted for-miku
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1962 斐波那契数列相关的知识,希望对你有一定的参考价值。
链接:Miku
----------------------
不显然的矩阵乘法
------------------
#include<iostream> #include<cstdio> #include<cstring> using namespace std; long long n; long long m=1000000007; long long c[5][5],a[5][5]; long long ans[5][5]; int main(){ cin>>n; n--; ans[1][1]=ans[2][2]=1; a[1][2]=a[2][1]=a[2][2]=1; while(n){ if(n%2){ memset(c,0,sizeof(c)); for(long long i=1;i<=2;++i) for(long long j=1;j<=2;++j) for(long long k=1;k<=2;++k) c[i][j]=(c[i][j]+ans[i][k]*a[k][j])%m; for(long long i=1;i<=2;++i) for(long long j=1;j<=2;++j) ans[i][j]=c[i][j]; } n/=2; memset(c,0,sizeof(c)); for(long long i=1;i<=2;++i) for(long long j=1;j<=2;++j) for(long long k=1;k<=2;++k) c[i][j]=(c[i][j]+a[i][k]*a[k][j])%m; for(long long i=1;i<=2;++i) for(long long j=1;j<=2;++j) a[i][j]=c[i][j]; } cout<<(ans[1][1]+ans[2][1])%m; return 0; }
以上是关于P1962 斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章