제출 #1283830

#제출 시각아이디문제언어결과실행 시간메모리
1283830aren_danceDostavljač (COCI18_dostavljac)C++20
0 / 140
296 ms2440 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...