Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52729 | AK2022071367 | 数学,很美妙吧 | C++ | 解答错误 | 0 | 1000 MS | 50328 KB | 629 | 2022-07-20 11:51:19 |
#include<bits/stdc++.h> using namespace std; const int MAXN=5005,mod=1000000007; int f[MAXN][MAXN],n,m,k; int fastpow(int a,int k) { int base=1; for(; k; k>>=1,a=a*1ll*a%mod)if(k&1)base=base*1ll*a%mod; return base; } int main() { scanf("%d%d%d",&n,&k,&m); for(int i=1,val; i<=n; ++i) { val=fastpow(i,m),f[1][i]=(f[1][i]+val)%mod; for(int j=1; j<k; ++j) for(int l=j; (f[j][l])&&l+i<=n; ++l) f[j+1][l+i]=((f[j+1][l+i]+f[j][l])%mod+val)%mod; // for(int j=0; j<=k; ++j) // for(int l=0; l<=n; ++l) // cout<<f[j][l]<<(l==n?'\n':' '); // cout<<endl; } printf("%d\n",f[k][n]); return 0; }