斐波那契
邻接矩阵...
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define LL long long 4 5 const int maxn=2; 6 7 int n; 8 9 struct MM{ 10 LL a[100][100]; 11 void init(){ 12 memset(a, 0, sizeof(a)); 13 for(int i=1;i<=maxn;++i){ 14 a[i][i] = 1; 15 } 16 } 17 }; 18 19 MM a,b,ans; 20 21 MM cheng ( MM a,MM b ){ 22 23 MM ans; 24 for(int i=1;i<=maxn;i++) 25 for(int j=1;j<=maxn;j++){ 26 ans.a[i][j]=0; 27 for(int k=1;k<=maxn;k++) 28 ans.a[i][j]+=a.a[i][k]*b.a[k][j]; 29 } 30 return ans; 31 } 32 33 MM shu( MM a,int b){ 34 35 MM ans;ans.init(); 36 while(b!=0){ 37 if(b&1) ans=cheng(a,ans); 38 a=cheng(a,a); 39 b>>=1; 40 } 41 return ans; 42 } 43 int main() 44 { 45 cin>>n; 46 a.a[1][1]=1,a.a[1][2]=1,a.a[2][1]=1,a.a[2][2]=0; 47 MM ans=shu(a,n); 48 cout<<ans.a[1][2]; 49 return 0; 50 }