Project Euler #624 Two heads are better than one【斐波那契】
Project Euler #624 Two heads are better than one
【题目描述】
【题解】
最后我们可以通过打表或推理得到这个式子,其中为斐波那契数列。
我们知道
将代入
就变成了两个等比数列的差。
因为
所以无限项的通项公式就是
代入就可以了。
【代码如下】
#include<cstdio>
using namespace std;
typedef long long LL;
const LL MOD=1e9+9,NI=383008016;
LL n;
LL qsm(LL x,LL b){
LL Mul=1;x=(x%MOD+MOD)%MOD;
for(;b;b>>=1,x=1ll*x*x%MOD) if(b&1) Mul=1ll*Mul*x%MOD;
return Mul;
}
int main(){
freopen("coin.in","r",stdin);
freopen("coin.out","w",stdout);
scanf("%lld",&n);
LL A=qsm(1+NI ,n-1)*4%MOD*qsm(qsm(4,n)-qsm(1+NI,n),MOD-2)%MOD;
LL B=qsm(1-NI+MOD,n-1)*4%MOD*qsm(qsm(4,n)-qsm(1-NI,n),MOD-2)%MOD;
printf("%lld\n",NI*qsm(10,MOD-2)%MOD*(((A-B)%MOD+MOD)%MOD)%MOD);
return 0;
}