斐波那契快速幂
下面的神仙代码的构造矩阵是
| 1 0 |
| 0 1 |
留着用来当模板。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int mod=1e9+7;
pll operator *(const pll &a,const pll &b)
{
return make_pair((a.first*b.first+a.second*b.second)%mod,(a.first*b.second+a.second*b.first+a.second*b.second)%mod);
}
ll F(ll y)
{
pll ans=make_pair(1,0),x=make_pair(0,1);
while(y)
{
if(y&1) ans=ans*x;
x=x*x;
y/=2;
}
return ans.first+ans.second;
}
int main()
{
ll n;
cin>>n;
cout<<F(n-1)%mod;
return 0;
}