题意简述:
求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; }