zoukankan      html  css  js  c++  java
  • CodeForces

    There are well-known formulas: . Also mathematicians found similar formulas for higher degrees.

    Find the value of the sum  modulo 109 + 7 (so you should find the remainder after dividing the answer by the value 109 + 7).

    Input

    The only line contains two integers n, k (1 ≤ n ≤ 109, 0 ≤ k ≤ 106).

    Output

    Print the only integer a — the remainder after dividing the value of the sum by the value 109 + 7.

    Examples

    Input
    4 1
    Output
    10
    Input
    4 2
    Output
    30
    Input
    4 3
    Output
    100
    Input
    4 0
    Output
    4

    就是抄个板子在这里。

    #include<bits/stdc++.h>
    #define ll long long
    const int maxn=1000005;
    const int mod=1000000007;
    using namespace std;
    ll f[maxn],fac[maxn],inv[maxn];
    ll P(ll a,ll b)
    {
        ll ans=1;
        while(b) {
            if(b&1) ans=ans*a%mod;
            b>>=1; a=a*a%mod;
        }
        if(ans<0) ans+=mod;
        return ans;
    }
    void init(int tot)
    {
        fac[0]=1;
        for(int i=1;i<=tot;i++)
            fac[i]=fac[i-1]*i%mod;
        inv[tot]=P(fac[tot],mod-2);
        inv[0]=1; //求阶乘逆元 
        for(int i=tot-1;i>=1;i--)
            inv[i]=inv[i+1]*(i+1)%mod;
    }
    ll Lagrange(ll n,ll k)
    {
        int tot=k+1;
        init(tot);
        ll ans=0,now=1;
        for(int i=1;i<=tot;i++) now=now*(n-i)%mod;
        for(int i=1;i<=tot;i++) {
            ll inv1=P(n-i,mod-2);
            ll inv2=inv[i-1]*inv[tot-i]%mod;
            if((tot-i)&1) inv2=mod-inv2;
            ll temp=now*inv1%mod;
            temp=temp*f[i]%mod*inv2%mod;
            ans+=temp;
            if(ans>=mod) ans-=mod;
        }
        return ans;
    }
    int main()
    {
        ll n,k;
        cin>>n>>k;
        for(int i=1;i<=k+2;i++) f[i]=(f[i-1]+P(i,k))%mod;
        if(n<=k+2) cout<<f[n]<<endl;
        else cout<<Lagrange(n,k+1)<<endl;
        return 0;
    }
  • 相关阅读:
    VS2013 使用QCustomPlot等三方库如何配置
    error LNK1112:模块计算机类型"X64" 与目标计算机类型"X86" 冲突
    Qt 获取屏幕当前分辨率
    流程控制
    导航条和工作内容纪要
    js简介
    高度塌陷
    浮动
    文档流
    display和overflow
  • 原文地址:https://www.cnblogs.com/hua-dong/p/9642420.html
Copyright © 2011-2022 走看看