题意:
给出 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;
}
}
}