** 矩阵乘法+快速幂求斐波那契:** <Excerpt in index | 首页摘要>
<The rest of contents | 余下全文>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #include<iostream> #include<algorithm> #include<cmath> using namespace std; int n,m; int a[2][2]={1,1,1,0}; int b[2][2]={1,0,0,1}; void jzcf(int a[2][2],int b[2][2]) { int i,j,k; int c[2][2]; for(i=0;i<2;i++) { for(j=0;j<2;j++) { c[i][j]=0; for(k=0;k<2;k++) { c[i][j]=(c[i][j]+a[i][k]*b[k][j]); } } } for(i=0;i<2;i++) { for(j=0;j<2;j++) { b[i][j]=c[i][j]; } } } void ksm(int n) { if(n==0) { cout<<0<<endl; } else { n--; while(n) { if(n%2==1) { jzcf(a,b); } jzcf(a,a); n/=2; } cout<<b[0][0]<<endl; } } int main() {
while(cin>>n) { ksm(n); a[0][0]=a[0][1]=a[1][0]=b[0][0]=b[1][1]=1; a[1][1]=b[0][1]=b[1][0]=0;
} return 0; }
|
大神博客:
母函数http://blog.csdn.net/xuzengqiang/article/details/7464337
http://www.cnblogs.com/dongsheng/archive/2013/06/02/3114073.html