#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int N=351;
ll dp[N][N];
ll fak[N];
ll cr[N][N];
ll bpow(ll x,ll y){
if(y==0){
return 1;
}
ll g=bpow(x,y/2);
g*=g;
g%=mod;
if(y%2==0){
return g;
}
g*=x;
g%=mod;
return g;
}
ll inverse(ll x){
return bpow(x,mod-2);
}
ll c(ll x,ll y){
ll e=fak[y]*(fak[x-y]);
e%=mod;
e=inverse(e);
e*=fak[x];
e%=mod;
return e;
}
int main(){
int n;
cin>>n;
fak[0]=1;
for(ll i=1;i<=n;++i){
fak[i]=fak[i-1]*i;
fak[i]%=mod;
}
for(int i=0;i<=n;++i){
for(int j=0;j<=i;++j){
cr[i][j]=c(i,j);
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
for(int k=0;k<=j;++k){
if(k==i){
dp[i][j]+=(bpow(i-1,j-k)*c(j,k));
dp[i][j]%=mod;
continue;
}
dp[i][j]+=(dp[i-1][j-k]*cr[j][k]);
dp[i][j]%=mod;
}
}
}
cout<<dp[n][n];
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |