1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 struct node 5 { 6 ll g[3][3]; 7 }a,a1,b,c,res,res1; 8 void danwei(node &x) 9 { 10 for(int i =1;i<=2;i++) 11 for(int j=1;j<=2;j++) 12 if(i==j) x.g[i][j]=1; 13 else x.g[i][j]=0; 14 } 15 void chengfa(node &a,node &b,node &c) 16 { 17 int i,j,k; 18 memset(c.g,0,sizeof(c.g)); 19 for(i=1;i<=2;i++) 20 for(j=1;j<=2;j++) 21 for(k=1;k<=2;k++) 22 c.g[i][j]=c.g[i][j]+a.g[i][k]*b.g[k][j]; 23 } 24 void mi(node &x,int k) 25 { 26 danwei(res); 27 while(k!=0) 28 { 29 if(k%2==1) 30 { 31 chengfa(res,a,res1); 32 res=res1; 33 } 34 chengfa(a,a,a1); 35 a=a1; 36 k/=2; 37 } 38 39 } 40 int main() 41 { 42 int n; 43 cin>>n; 44 if(n==1) 45 { 46 cout<<1; 47 return 0; 48 } 49 memset(a.g,0,sizeof(a.g)); 50 memset(b.g,0,sizeof(b.g)); 51 a.g[1][1]=a.g[1][2]=a.g[2][1]=b.g[1][1]=1; 52 mi(a,n-1); 53 chengfa(res1,b,c); 54 cout<<c.g[1][1]; 55 }