思路:
代码:
#include <bits/stdc++.h>
using namespace std;
struct Matrix
{
int a[2][2];
};
Matrix mul(Matrix A,Matrix B)
{
Matrix C= {0,0,
0,0,
};
int i,j,k;
for(i=0; i<2; i++)
{
for(j=0; j<2; j++)
{
for(k=0; k<2; k++)
{
C.a[i][j]+=A.a[i][k]*B.a[k][j];
}
}
}
return C;
}
Matrix KSM(Matrix I,int J)
{
Matrix ANS={
1,0,
0,1,};
while(J)
{
if(J&1)
{
ANS=mul(ANS,I);
}
I=mul(I,I);
J>>=1;
}
return ANS;
}
int main()
{
Matrix Z= {1,1,
1,0,
};
Matrix X= {1,0,
1,0,
};
int n;
cin>>n;
if(n==1)
cout<<1<<endl;
else if(n==2)
cout<<1<<endl;
else
{
Matrix Y=mul(KSM(Z,n-2),X);
cout<<Y.a[0][0]<<endl;
}
return 0;
}