제출 #1287182

#제출 시각아이디문제언어결과실행 시간메모리
1287182arman.khachatryanZapina (COCI20_zapina)C++20
110 / 110
107 ms2412 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...