Submission #2561189
Source Code Expand
#include <bits/stdc++.h> using namespace std; #define int long long typedef vector<int> vint; typedef pair<int, int> pint; int dx[8] = {1, 0, -1, 0, 1, -1, -1, 1}; int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1}; /* ifstream ifs("in.txt"); ofstream ofs("out.txt"); #define cin ifs #define cout ofs //*/ //拡張ユークリッドの互除法 int extgcd(int a, int b, int& x, int& y) { int d = a; if (b != 0) { d = extgcd(b, a % b, y, x); y -= (a / b) * x; } else { x = 1; y = 0; } return d; } // mod逆元 int mod_inverse(int a, int m) { int x, y; extgcd(a, m, x, y); return (m + x % m) % m; } int N, M; int dp[3333][3333]; int fact[3333], fact_inv[3333]; int exp_2[9999999], exp_2_2[3333]; signed main() { cin >> N >> M; fact[0] = 1; fact_inv[0] = 1; exp_2_2[0] = 2; for (int i = 1; i < 3333; i++) { fact[i] = fact[i - 1] * i % M; fact_inv[i] = mod_inverse(fact[i], M); exp_2_2[i] = exp_2_2[i - 1] * exp_2_2[i - 1] % M; } exp_2[0] = 1; for (int i = 1; i < 9999999; i++) { exp_2[i] = exp_2[i - 1] * 2 % M; } for (int i = 0; i < 3333; i++) { dp[i][0] = 1; } for (int i = 1; i < 3333; i++) { for (int k = 1; k < 3333; k++) { dp[i][k] = (dp[i - 1][k - 1] + dp[i - 1][k] + dp[i - 1][k] * k) % M; } } int ans = 0; int sign = -1; for (int i = 0; i <= N; i++) { sign *= -1; int comb = fact[N] * fact_inv[i] % M * fact_inv[N - i] % M; int ways = 0; for (int k = 0; k <= i; k++) { (ways += dp[i][k] * exp_2[k * (N - i)] % M) %= M; } (ways *= exp_2_2[N - i]) %= M; (ans += sign * (comb * ways % M) + M) %= M; } cout << ans << endl; }
Submission Info
Submission Time | |
---|---|
Task | E - Everything on It |
User | packer_jp |
Language | C++14 (GCC 5.4.1) |
Score | 900 |
Code Size | 1869 Byte |
Status | AC |
Exec Time | 515 ms |
Memory | 165248 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | ||||||
---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 600 / 600 | 300 / 300 | ||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | a01, a02, a03, a04 |
Subtask1 | a01, a02, a03, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24 |
Subtask2 | a01, a02, a03, a04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
a01 | AC | 288 ms | 165248 KB |
a02 | AC | 288 ms | 165248 KB |
a03 | AC | 288 ms | 165248 KB |
a04 | AC | 450 ms | 165248 KB |
b05 | AC | 288 ms | 165248 KB |
b06 | AC | 287 ms | 165248 KB |
b07 | AC | 287 ms | 165248 KB |
b08 | AC | 288 ms | 165248 KB |
b09 | AC | 288 ms | 165248 KB |
b10 | AC | 287 ms | 165248 KB |
b11 | AC | 286 ms | 165248 KB |
b12 | AC | 287 ms | 165248 KB |
b13 | AC | 287 ms | 165248 KB |
b14 | AC | 286 ms | 165248 KB |
b15 | AC | 287 ms | 165248 KB |
b16 | AC | 288 ms | 165248 KB |
b17 | AC | 287 ms | 165248 KB |
b18 | AC | 288 ms | 165248 KB |
b19 | AC | 288 ms | 165248 KB |
b20 | AC | 287 ms | 165248 KB |
b21 | AC | 288 ms | 165248 KB |
b22 | AC | 288 ms | 165248 KB |
b23 | AC | 288 ms | 165248 KB |
b24 | AC | 286 ms | 165248 KB |
c25 | AC | 287 ms | 165248 KB |
c26 | AC | 288 ms | 165248 KB |
c27 | AC | 287 ms | 165248 KB |
c28 | AC | 287 ms | 165248 KB |
c29 | AC | 290 ms | 165248 KB |
c30 | AC | 293 ms | 165248 KB |
c31 | AC | 299 ms | 165248 KB |
c32 | AC | 315 ms | 165248 KB |
c33 | AC | 347 ms | 165248 KB |
c34 | AC | 399 ms | 165248 KB |
c35 | AC | 439 ms | 165248 KB |
c36 | AC | 444 ms | 165248 KB |
c37 | AC | 487 ms | 165248 KB |
c38 | AC | 452 ms | 165248 KB |
c39 | AC | 447 ms | 165248 KB |
c40 | AC | 459 ms | 165248 KB |
c41 | AC | 458 ms | 165248 KB |
c42 | AC | 451 ms | 165248 KB |
c43 | AC | 491 ms | 165248 KB |
c44 | AC | 515 ms | 165248 KB |