矩阵乘法
//矩阵乘法,斐波那契数列# include <bits/stdc++.h>using namespace std;typedef long long LL;const LL mod=1e9+7;inline void mul(LL f[2],LL a[2][2]){ LL c[2]; memset(c,0,sizeof(c)); for(int i=0;i<2;i++){ for(int j=0;j<2;j++){ c[i]=(c[i]+f[j]*a[j][i])%mod; } } memcpy(f,c,sizeof(c)); return ;}inline void mulself(LL a[2][2]){ LL c[2][2]; memset(c,0,sizeof(c)); for(int i=0;i<2;i++){ for(int j=0;j<2;j++){ for(int k=0;k<2;k++){ c[i][j]=(c[i][j]+a[i][k]*a[k][j])%mod; } } } memcpy(a,c,sizeof(c)); return ;}int main(){ LL n; scanf("%lld",&n); LL f[2]={0,1};//f[0]=0,f[1]=1; LL a[2][2]={{0,1},{1,1}}; for(;n;n>>=1){ if(n&1) mul(f,a); mulself(a); } printf("%lld\n",f[0]); return 0;}