#include <bits/stdc++.h>
using namespace std;
#define ll long long
const long long N=360, MOD=1e9+7;
ll fact[N], dp[N][N];
ll sum(ll a, ll b){
if(a+b>=MOD){
return a+b-MOD;
}
return a+b;
}
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;
}
ll C(ll n, ll k) {
return mult(fact[n], BinPow(mult(fact[k], fact[n-k]), MOD-2));
}
int main() {
ll n;
cin>>n;
for(int i=1; i<=n; i++){
dp[1][i]=0;
dp[i][1]=1;
}
fact[0]=1;
for(int i=1; i<=N; i++){
fact[i]=mult(fact[i-1], i);
}
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(C(j, k), BinPow(i-1, j-k)));
}else{
dp[i][j]=sum(dp[i][j], mult(dp[i-1][j-k], C(j, k)));
}
}
}
}
cout<<dp[n][n];
}
컴파일 시 표준 에러 (stderr) 메시지
zapina.cpp: In function 'int main()':
zapina.cpp:43:16: warning: iteration 359 invokes undefined behavior [-Waggressive-loop-optimizations]
43 | fact[i]=mult(fact[i-1], i);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~
zapina.cpp:42:19: note: within this loop
42 | for(int i=1; i<=N; i++){
| ~^~~| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |