Submission #1287169

#TimeUsernameProblemLanguageResultExecution timeMemory
1287169arman.khachatryanZapina (COCI20_zapina)C++20
55 / 110
1096 ms1240 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int N = 355; const ll MOD = 1e9 + 7; ll dp[N][N], fact[N], invfact[N]; ll mult(ll a, ll b) { return (a * b) % MOD; } ll sum(ll a, ll b) { return (a + b >= MOD ? a + b - MOD : a + b); } ll binpow(ll a, ll b) { ll res = 1; while (b) { if (b & 1) res = mult(res, a); a = mult(a, a); b >>= 1; } return res; } ll C(ll n, ll k) { if (k < 0 || k > n) return 0; return mult(fact[n], binpow(mult(fact[k], fact[n - k]), MOD-2)); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; fact[0] = 1; for (int i = 1; i < N; i++) fact[i] = mult(fact[i - 1], i); dp[1][1] = 1; for (int i = 2; i <= n; i++) { for (int j = 0; 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(C(j, k), dp[i - 1][j - k])); } } } cout << dp[n][n] % MOD << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...