斐波那契--矩陣快速冪
阿新 • • 發佈:2019-01-06
void multify(int a[][2],int b[][2]) { int c[2][2]; for(int i=0;i<2;i++) for(int j=0;j<2;j++) c[i][j] = 0; for(int i=0;i<2;i++) for(int j=0;j<2;j++) for(int k=0;k<2;k++) c[i][j] += a[i][k] * b[k][j]; for(int i=0;i<2;i++) for(int j=0;j<2;j++) a[i][j] = c[i][j]; } int matrix(int n) { int ans[2][2] = {{1,0},{0,1}}; int base[2][2] = {{1,1},{1,0}}; while(n) { if(n&1) multify(ans,base); multify(base,base); n = n>>1; } return ans[0][0]; } int main() { int n; cin>>n; cout<<matrix(n-1)<<endl; return 0; }