#include <bits/stdc++.h>
using namespace std;
#define ll long long
const long long N=360, MOD=1e9+7;
ll fact[N][N], dp[N][N];
ll sum(ll a, ll b){
return (a+b)%MOD;
}
ll mult(ll a, ll b){
return (a*b)%MOD;
}
ll BinPow(ll x, ll y){
ll ans=1;
while(y>0){
if(y&1){
ans=mult(ans, x);
}
x=mult(x, x);
y>>=1;
}
return ans;
}
int main() {
int n;
cin>>n;
for(int i=1; i<=n; i++){
dp[i][1]=1;
}
for(int i=0; i<N; i++){
fact[i][0] = fact[i][i] = 1;
for(int j=1; j<i; j++){
fact[i][j]=sum(fact[i][j], sum(fact[i-1][j-1], fact[i-1][j]));
}
}
for(int i=2; i<=n; i++){
for(int j=2; j<=n; j++){
for(int k=0; k<=j; k++){
if(k==i){
dp[i][j]=sum(dp[i][j], mult(fact[j][k], BinPow(i-1, j-k)));
}else{
dp[i][j]=sum(dp[i][j], mult(dp[i-1][j-k], fact[j][k]));
}
}
}
}
cout<<dp[n][n];
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |