• 2017 9 27 模拟赛T1


    题意简述:

    求1—n中所有数的k次方的和,答案对1234567891取模。

    样例输入格式:

    一行,两个整数n,k

    样例输出格式:

    一个整数,即所求的和。

    数据范围:n<10^9,k<100

    代码来自标程。

    #include<cstdio>
    long long n,k,p=1234567891,tmp=1;
    long long a[105][105],ans;
    long long pow(long long x,long long y)
    {
        long long re=1;
        for(;y;y>>=1)
        {
            if(y&1) re=re*x%p;
            x=x*x%p;
        }
        return re;
    }
    int main()
    {
        scanf("%lld%lld",&n,&k);
        for(int i=1;i<=k+1;i++) a[0][i]=(a[0][i-1]+pow(i,k))%p;
        for(int i=1;i<=k+1;i++)
        {
            for(int j=i;j<=k+1;j++)    a[i][j]=(a[i-1][j]-a[i-1][j-1]+p)%p;
        }
        for(int i=0;i<=k+1;i++)
        {
            ans=(ans+a[i][i]*tmp)%p;
            tmp=tmp*(n-i)%p*pow(i+1,p-2)%p;
        }
        printf("%lld",ans);
        return 0;
    }
  • 相关阅读:
    <LinkedList> 61
    <LinkedList> (hard + 高)25
    <DP> (高频)322
    <BackTracking> (dfs hard) 291
    <Tree> (高频)236
    <Math> 29 365
    <String> 161 358
    <Array> 309 (高)334
    <Array> 54 (高频+hard )45
    <Design> 359 346
  • 原文地址:https://www.cnblogs.com/zeroform/p/7603046.html
Copyright © 2020-2023  润新知