HDU 6027 Easy Summation

来源:互联网 发布:go语言编程 视频 编辑:程序博客网 时间:2024/05/18 17:04

题意:

          给出 N 和 K,问( 1^k + 2 ^k + ......... + N^k )Mod 1e9+7 的值。

思路:

          N 小于 1e5,k小于6,暴力即可。

          若数据量较大可以通过拉格朗日插值法计算公式。

          详细:http://github.tiankonguse.com/blog/2017/05/06/2017-CCPC-WFINAL.html

代码:

#include <bits/stdc++.h>using namespace std;const int MOD=1e9+7;const int MAXN=10010;long long a[MAXN][6];int main(){    ios::sync_with_stdio(false);    int T,n,k;    cin>>T;    for(int i=1;i<MAXN-1;i++){        a[i][1]=i;        for(int j=2;j<=5;j++)            a[i][j]=(a[i][j-1]*i)%MOD;    }    while(T--){        cin>>n>>k;        if(k==0) cout<<n<<endl;        else{            long long ans=0;            for(int i=1;i<=n;i++){                ans+=a[i][k];                ans%=MOD;            }            cout<<ans<<endl;        }    }}


0 0
原创粉丝点击