Submission #407284

# Submission time Handle Problem Language Result Execution time Memory
407284 2021-05-18T17:18:30 Z soroush Zapina (COCI20_zapina) C++17
110 / 110
162 ms 1520 KB
//叫んで 藻掻もがいて 瞼まぶたを腫らしても
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<int , int> pii;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

const int maxn = 400;
const ll mod = 1e9+7;

#define pb push_back
#define endl '\n'
#define dokme(x) cout << x , exit(0)
#define ms(x , y) memset(x , y , sizeof x)
ll pw(ll a, ll b, ll md = mod){ll res = 1;while(b){if(b&1){res=(a*res)%md;}a=(a*a)%md;b>>=1;}return(res);}

ll n , ans , fact[maxn] , inv[maxn] , dp[maxn][maxn];

ll C(ll r , ll n){
	return ((fact[n] * inv[r])%mod * inv[n - r])%mod;
}

int32_t main(){
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	cin >> n;
	ans = pw(n , n);
	fact[0] = inv[0] = 1;
	for(int i = 1 ; i < maxn ; i ++)
		fact[i] = (fact[i - 1] * i) % mod , inv[i] = pw(fact[i] , mod - 2);
	dp[0][0] = 1;
	for(int i = 1 ; i <= n ; i ++)
		for(int j = 0 ; j <= n ; j ++)
			for(int k = 0 ; k <= j ; k ++)if(k ^ i)
				dp[i][j] = (dp[i][j] + dp[i-1][j-k] * C(k , n - j + k))%mod;
	cout << (ans - dp[n][n] + mod)%mod;
	return(0);
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 332 KB Output is correct
10 Correct 1 ms 328 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 324 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 1 ms 332 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 332 KB Output is correct
8 Correct 1 ms 332 KB Output is correct
9 Correct 1 ms 332 KB Output is correct
10 Correct 1 ms 328 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 1 ms 324 KB Output is correct
14 Correct 1 ms 332 KB Output is correct
15 Correct 1 ms 332 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
17 Correct 79 ms 1140 KB Output is correct
18 Correct 2 ms 460 KB Output is correct
19 Correct 18 ms 804 KB Output is correct
20 Correct 1 ms 332 KB Output is correct
21 Correct 105 ms 1304 KB Output is correct
22 Correct 13 ms 708 KB Output is correct
23 Correct 2 ms 460 KB Output is correct
24 Correct 23 ms 824 KB Output is correct
25 Correct 16 ms 820 KB Output is correct
26 Correct 32 ms 896 KB Output is correct
27 Correct 153 ms 1520 KB Output is correct
28 Correct 150 ms 1408 KB Output is correct
29 Correct 158 ms 1264 KB Output is correct
30 Correct 157 ms 1336 KB Output is correct
31 Correct 154 ms 1352 KB Output is correct
32 Correct 157 ms 1340 KB Output is correct
33 Correct 158 ms 1364 KB Output is correct
34 Correct 159 ms 1384 KB Output is correct
35 Correct 162 ms 1284 KB Output is correct
36 Correct 159 ms 1344 KB Output is correct
37 Correct 161 ms 1416 KB Output is correct