Submission #3391394
Source Code Expand
#include <iostream> #include <algorithm> using namespace std; using ll = long long int; ll MOD; const int MAXN = 3010; ll comb[MAXN + 10][MAXN + 10]; ll mod_pow(ll N, ll K, ll mod=MOD) { ll ret = 1; N %= mod; for(; K>0; K>>=1) { if(K & 1) (ret *= N) %= mod; (N *= N) %= mod; } return ret; } void init() { for(int i=0; i<MAXN; i++) { comb[i][0] = 1; for(int j=1; j<MAXN; j++) { comb[i][j] = (comb[i-1][j] + comb[i-1][j-1]) % MOD; } } } ll dp[3010][3010], ways[3010], ans; int main() { int N; cin >> N >> MOD; init();// MOD はグローバル // dp (ways2 を求める) dp[0][0] = 1; for(int i=1; i<=N; i++) for(int j=0; j<=i; j++) { if(j > 0) (dp[i][j] += dp[i-1][j-1]) %= MOD; (dp[i][j] += dp[i-1][j] * (j+1)) %= MOD; } // ways1 を求め、答えに足す for(int i=0; i<=N; i++) { for(int j=0; j<=i; j++) { (ways[i] += dp[i][j] * mod_pow(2, (N-i)*j)) %= MOD; } (ways[i] *= mod_pow(2, mod_pow(2, N-i, MOD-1))) %= MOD; ll val = ways[i] * comb[N][i] % MOD; if(i % 2 == 0) ans = (ans + val ) % MOD; else ans = (ans - val + MOD) % MOD; } cout << ans << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - Everything on It |
User | tsutaj |
Language | C++14 (GCC 5.4.1) |
Score | 900 |
Code Size | 1326 Byte |
Status | AC |
Exec Time | 1928 ms |
Memory | 140416 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 | 110 ms | 72448 KB |
a02 | AC | 110 ms | 72448 KB |
a03 | AC | 111 ms | 72704 KB |
a04 | AC | 1924 ms | 140416 KB |
b05 | AC | 110 ms | 72448 KB |
b06 | AC | 110 ms | 72448 KB |
b07 | AC | 110 ms | 72448 KB |
b08 | AC | 110 ms | 72448 KB |
b09 | AC | 110 ms | 72448 KB |
b10 | AC | 110 ms | 72448 KB |
b11 | AC | 111 ms | 72576 KB |
b12 | AC | 111 ms | 72576 KB |
b13 | AC | 111 ms | 72576 KB |
b14 | AC | 111 ms | 72576 KB |
b15 | AC | 111 ms | 72576 KB |
b16 | AC | 110 ms | 72576 KB |
b17 | AC | 110 ms | 72576 KB |
b18 | AC | 110 ms | 72576 KB |
b19 | AC | 110 ms | 72576 KB |
b20 | AC | 111 ms | 72704 KB |
b21 | AC | 111 ms | 72704 KB |
b22 | AC | 111 ms | 72704 KB |
b23 | AC | 111 ms | 72704 KB |
b24 | AC | 111 ms | 72704 KB |
c25 | AC | 111 ms | 72704 KB |
c26 | AC | 111 ms | 72832 KB |
c27 | AC | 113 ms | 74880 KB |
c28 | AC | 118 ms | 76928 KB |
c29 | AC | 135 ms | 81024 KB |
c30 | AC | 170 ms | 85120 KB |
c31 | AC | 234 ms | 91264 KB |
c32 | AC | 400 ms | 101504 KB |
c33 | AC | 778 ms | 115840 KB |
c34 | AC | 1377 ms | 132224 KB |
c35 | AC | 1825 ms | 140416 KB |
c36 | AC | 1873 ms | 140416 KB |
c37 | AC | 1895 ms | 140416 KB |
c38 | AC | 1906 ms | 140416 KB |
c39 | AC | 1920 ms | 140416 KB |
c40 | AC | 1922 ms | 140416 KB |
c41 | AC | 1925 ms | 140416 KB |
c42 | AC | 1928 ms | 140416 KB |
c43 | AC | 1928 ms | 140416 KB |
c44 | AC | 1923 ms | 140416 KB |