Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52755 | AK2022071308 | 数学,很美妙吧 | C++ | 运行超时 | 0 | 1000 MS | 424 KB | 834 | 2022-07-20 11:51:57 |
#include<bits/stdc++.h> using namespace std; const long long MOD=1000000007; long long n,m,k; long long a[5010]; long long c[5010],cou; long long qp(long long x,long long base) { long long ans=1; while(x!=0) { long long k=x%2; x>>=1; ans*=(k==0?1:base)%MOD; base =((long long)(base*base))%MOD; } return ans; } long long dfs(long long peo,long long num,long long las) { long long ans=0; if(peo==1) { c[num+1]++; c[num+1]%=MOD; return 1; } for(long long i=las;i*peo<=num;i++) { long long k=dfs(peo-1,num-i,i); c[i+1]+=k; c[i+1]%=MOD; ans+=k; } return ans; } int main() { scanf("%lld%lld%lld",&n,&k,&m); for(int i=1;i<=n-k+1;i++) a[i]=qp(m,i); n-=k; long long z=dfs(k,n,0); for(int i=1;i<=n+1;i++) { cou+=(a[i]*c[i])%MOD; } printf("%lld",cou); }