zoukankan      html  css  js  c++  java
  • Fibonacci Sum

    Fibonacci Sum

    利用斐波那契通项求和,并二项式展开即可。其中求斐波那契需要用到二次剩余求根号5的值。

    // Created by CAD
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    
    const int mod=1e9+9;
    ll five=383008016;
    inline int qpow(int x,int n){
        ll ans=1;
        while(n>0){
            if(n&1) ans=ans*x%mod;
            n>>=1,x=1ll*x*x%mod;
        }
        return ans;
    }
    const int maxn=1e5+5;
    ll fac[maxn],inv[maxn];
    void init()
    {
        fac[0]=1;
        for(int i=1;i<maxn;i++)
            fac[i]=(fac[i-1])*i%mod;
        inv[maxn-1]=qpow(fac[maxn-1],mod-2);
        inv[0]=1;
        for(int i=maxn-2;i>=1;--i)
            inv[i]=inv[i+1]*(i+1)%mod;
    }
    int C(int n,int k)
    {
        return fac[n]*inv[k]%mod*inv[n-k]%mod;
    }
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int T;cin>>T;
        init();
        int A=(five+1)*qpow(2,mod-2)%mod;
        int B=((1-five)*qpow(2,mod-2)%mod+mod)%mod,_B=qpow(B,mod-2);
        int _five=qpow(five,mod-2);
    
        while(T--){
            ll n,c,k;cin>>n>>c>>k;
            int _five_k=qpow(_five,k);
            c%=(mod-1);
            int ans=0;
            int Ac=qpow(A,c),Bc=qpow(B,c);
            int q=qpow(Ac,k);
            int _Ac=qpow(Ac,mod-2);
            int _AcBc=qpow(1ll*_Ac*Bc%mod,(n+1)%(mod-1));
            int up_left=qpow(q,(n+1)%(mod-1));
            for(int r=0;r<=k;++r){
                int cur=C(k,r);
                if(r&1) cur=mod-cur;
                if(q==1) ans=(1ll*ans+(n)%mod*cur%mod)%mod;
                else
                    ans=(1ll*ans+(1ll*up_left-q)%mod*qpow(q-1,mod-2)%mod*cur)%mod;
                q=1ll*q*_Ac%mod*Bc%mod;
                up_left=1ll*up_left*_AcBc%mod;
            }
            cout<<(1ll*ans*_five_k%mod+mod)%mod<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    hdu6761 Mininum Index // lyndon分解 + duval贪心 + 秦九韶算法
    hdu6762 Mow // 半平面交 模拟 双端队列
    数据库增删改查操作
    移动端自动化概念
    范围查询和模糊查询
    软件测试技能要求总结
    继承
    luogu_P2024 [NOI2001]食物链
    luogu_P4092 [HEOI2016/TJOI2016]树
    luogu_P2887 [USACO07NOV]防晒霜Sunscreen
  • 原文地址:https://www.cnblogs.com/CADCADCAD/p/13395669.html
Copyright © 2011-2022 走看看