• 解题:CF622F The Sum of the k-th Powers


    题面

    TJOI2018出CF原题弱化版是不是有点太过分了?对,就是 TJOI2018 教科书般的亵渎

    然而我这个问题只会那个题的范围的m^3做法

    回忆一下1到n求和是二次的,平方求和公式是三次的,立方求和公式是四次的,那m次方求和公式一定是个m+1次多项式

    直接扔m+2个值进去把它插出来,因为是连续的可以做到线性(不算逆元)

     1 #include<cstdio>
     2 const int N=1e6+60,mod=1e9+7;
     3 int n,k,ans,sum,fac[N],pre[N],suf[N];
     4 int Qpow(int x,int k)
     5 {
     6     if(k<=1) return k?x:1;
     7     int tmp=Qpow(x,k>>1);
     8     return 1ll*tmp*tmp%mod*((k&1)?x:1)%mod;
     9 }
    10 int main()
    11 {
    12     scanf("%d%d",&n,&k);
    13     fac[0]=pre[0]=suf[k+3]=1;
    14     for(int i=1;i<=k+2;i++) fac[i]=1ll*fac[i-1]*i%mod;
    15     for(int i=1;i<=k+2;i++) pre[i]=1ll*pre[i-1]*(n-i+mod)%mod;
    16     for(int i=k+2;i;i--) suf[i]=1ll*suf[i+1]*(n-i+mod)%mod;
    17     for(int i=1;i<=k+2;i++)
    18     {
    19         sum=(sum+Qpow(i,k))%mod;
    20         int fz=1ll*pre[i-1]*suf[i+1]%mod;
    21         int fm=1ll*fac[i-1]*fac[k+2-i]%mod;
    22         (ans+=1ll*sum*fz%mod*Qpow(((k-i)&1)?mod-fm:fm,mod-2)%mod)%=mod;
    23     }
    24     printf("%d",ans);
    25     return 0;
    26 }
    View Code
  • 相关阅读:
    Nginx原理入门教程
    MSDN原版系统镜像ISO下载站
    JWT跨域身份验证解决方案
    PHP获取毫秒时间戳
    IDCode校验算法
    PurpleAir空气质量数据采集
    检测微信好友是否删除自己
    京东联盟开发(13)——获取官方活动推广数据
    微信二维码标准
    车牌号正则表达式
  • 原文地址:https://www.cnblogs.com/ydnhaha/p/10617095.html
Copyright © 2020-2023  润新知