本人小学生,求斐波那契通项公式代码实现

回复帖子

@End_Dragon 2020-05-24 08:50 回复

我写了一下直接用通项公式求斐波那契数列第n项(懒得写高精,加了一个mod 100000000)的代码,自测有点错,但找不出来,神犇们帮改改

#define ll long long//偷点懒
const int MOD=1e8;
double mod(double x)//手写小数模1e8
{
    ll t=floor(x);
    return x-double(t-t%MOD);
}
double fp(double n,ll k)//写了个快速幂加速
{
    if(k==0)return 1;
    double t=fp(n,k/2);
    if(k&1)return mod(mod(t*t)*n);
    else return mod(t*t);
}
ll fib(int n)//主体
{
    return mod(1.0/sqrt(5)*mod(fp(((1.0+sqrt(5))/2.0),n)-fp(((1.0-sqrt(5))/2.0),n)));
}
反馈
如果你认为某个帖子有问题,欢迎向洛谷反馈,以帮助更多的同学。



请具体说明理由,以增加反馈的可信度。