Submission #1148755

#TimeUsernameProblemLanguageResultExecution timeMemory
1148755sonamoo악수 (kriii4_D)C++20
100 / 100
145 ms5760 KiB
#include <bits/stdc++.h> #define FastIO ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); #define pii pair<int,int> #define ll long long int #define SIZE 500005 #define all(v) v.begin(), v.end() #define pb push_back #define MOD 1000000007 #define INF 1000000007 using namespace std; ll C[888][888] , D[888][888] , comb[888][888] , inv[888]; int main() { FastIO; int N , M; cin >> N; comb[0][0] = inv[1] = comb[1][0] = comb[1][1] = 1; for (int i = 2; i < 800; i++) { comb[i][0] = 1; for (int j = 1; j <= i; j++) comb[i][j] = (comb[i-1][j-1]+comb[i-1][j])%MOD; inv[i] = (inv[MOD%i]*(MOD-MOD/i))%MOD; } C[1][0] = 1LL; D[1][0] = 1LL; for (int n = 2; n <= N; n++) { M = n*(n-1)/2; for (int k = n-1; k <= M; k++) { for (int i = 1; i <= n-1; i++) { for (int j = 0; j <= k-1; j++) { ll ret = (comb[n-1][i-1]*comb[k-1][j])%MOD; ret *= D[i][j]; ret %= MOD; ret *= D[n-i][k-j-1]; ret %= MOD; ret *= i; ret %= MOD; ret *= (n-i); ret %= MOD; C[n][k] += ret; C[n][k] %= MOD; } } D[n][k] = C[n][k]; D[n][k] += ((M-(k-1))*D[n][k-1])%MOD; D[n][k] %= MOD; } } ll ans=0 , tmp = 1LL; for (int k = 1; k <= M; k++) { tmp *= inv[M-k+1]; tmp %= MOD; ll ret = C[N][k]; ret *= tmp; ret %= MOD; ret *= k; ret %= MOD; ans += ret; ans %= MOD; } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...