Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52799 | lz | 数学,很美妙吧 | C++ | 运行超时 | 0 | 1000 MS | 316 KB | 579 | 2022-07-20 11:58:40 |
#include <bits/stdc++.h> using namespace std; int n,m,k; long long ans,md=1e9+7; inline long long cal(long long x,int p) { long long ans=1; while(p) { if(p%2==1) ans=(ans*x)%md; x=(x*x)%md; p>>=1; } return ans; } void dfs(int x,int lst,int val,long long cnt) { if(x==k) { ans=(ans+cnt+cal(val,m))%md; return ; } for(int i=lst; i<=val; i++) { if((val-i)>=i) dfs(x+1,i,val-i,(cnt+cal(i,m))%md); } } int main() { scanf("%d%d%d",&n,&k,&m); dfs(1,1,n,0); printf("%lld\n",ans); return 0; }