Submission #3382473
Source Code Expand
#include<bits/stdc++.h>
#define For(i,l,r) for(int i = (l),i##end = (r);i <= i##end;i++)
#define Fordown(i,r,l) for(int i = (r),i##end = (l);i >= i##end;i--)
#define debug(x) cout << #x << " = " << x << endl
using namespace std;
typedef long long ll;
template <typename T> inline bool chkmin(T &x,T y) { return y < x ? x = y,1 : 0; }
template <typename T> inline bool chkmax(T &x,T y) { return x < y ? x = y,1 : 0; }
const int INF = 0x3f3f3f3f;
const int N = 3e3 + 10;
int S[N][N],Sum[N],fac[N],inv[N];
inline int read() {
int x = 0,flag = 1;
char ch = getchar();
while(!isdigit(ch) && ch != '-')ch = getchar();
if(ch == '-')flag = -1,ch = getchar();
while(isdigit(ch))x = (x << 3) + (x << 1) + (ch - '0'),ch = getchar();
return x * flag;
}
inline int fpm(int a,int b,int mod) {
int res = 1;
while(b) {
if(b & 1) res = 1ll * res * a % mod;
a = 1ll * a * a % mod,b /= 2;
}
return res;
}
inline void init(int n,int mod) {
fac[0] = 1;
For(i,1,n) fac[i] = 1ll * fac[i - 1] * i % mod;
inv[n] = fpm(fac[n],mod - 2,mod);
Fordown(i,n,1) inv[i - 1] = 1ll * inv[i] * i % mod;
}
inline int C(int n,int m,int mod) {
return 1ll * fac[n] * inv[m] % mod * inv[n - m] % mod;
}
int main() {
int n = read(),mod = read();
init(n + 5,mod);
S[0][0] = 1;
For(i,1,n + 5) For(j,1,i + 5)
S[i][j] = (S[i - 1][j - 1] + 1ll * S[i - 1][j] * j) % mod;
int ans = 0;
For(i,0,n) {
int tot = 0,Prod = 1,val = fpm(2,n - i,mod);
int Others = fpm(2,fpm(2,n - i,mod - 1),mod);
For(j,0,i) {
tot = (tot + 1ll * Prod * S[i + 1][j + 1]) % mod;
Prod = 1ll * Prod * val % mod;
}
tot = 1ll * C(n,i,mod) * tot % mod * Others % mod;
ans = (ans + (i & 1 ? -tot : tot)) % mod;
}
printf("%d\n",(ans + mod) % mod);
return 0;
}
Submission Info
Submission Time |
|
Task |
E - Everything on It |
User |
ShichengXiao |
Language |
C++14 (GCC 5.4.1) |
Score |
900 |
Code Size |
1804 Byte |
Status |
AC |
Exec Time |
154 ms |
Memory |
34304 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 |
1 ms |
256 KB |
a02 |
AC |
1 ms |
256 KB |
a03 |
AC |
1 ms |
512 KB |
a04 |
AC |
153 ms |
34304 KB |
b05 |
AC |
1 ms |
256 KB |
b06 |
AC |
1 ms |
256 KB |
b07 |
AC |
1 ms |
256 KB |
b08 |
AC |
1 ms |
256 KB |
b09 |
AC |
1 ms |
256 KB |
b10 |
AC |
1 ms |
384 KB |
b11 |
AC |
1 ms |
384 KB |
b12 |
AC |
1 ms |
384 KB |
b13 |
AC |
1 ms |
384 KB |
b14 |
AC |
1 ms |
384 KB |
b15 |
AC |
1 ms |
384 KB |
b16 |
AC |
1 ms |
512 KB |
b17 |
AC |
1 ms |
512 KB |
b18 |
AC |
1 ms |
512 KB |
b19 |
AC |
1 ms |
512 KB |
b20 |
AC |
1 ms |
512 KB |
b21 |
AC |
1 ms |
512 KB |
b22 |
AC |
1 ms |
512 KB |
b23 |
AC |
1 ms |
512 KB |
b24 |
AC |
1 ms |
512 KB |
c25 |
AC |
1 ms |
512 KB |
c26 |
AC |
1 ms |
640 KB |
c27 |
AC |
2 ms |
896 KB |
c28 |
AC |
3 ms |
3072 KB |
c29 |
AC |
5 ms |
5120 KB |
c30 |
AC |
9 ms |
7168 KB |
c31 |
AC |
15 ms |
9216 KB |
c32 |
AC |
31 ms |
15360 KB |
c33 |
AC |
63 ms |
21504 KB |
c34 |
AC |
112 ms |
29696 KB |
c35 |
AC |
146 ms |
33792 KB |
c36 |
AC |
150 ms |
33792 KB |
c37 |
AC |
151 ms |
34048 KB |
c38 |
AC |
152 ms |
34176 KB |
c39 |
AC |
153 ms |
34304 KB |
c40 |
AC |
153 ms |
34304 KB |
c41 |
AC |
154 ms |
34304 KB |
c42 |
AC |
154 ms |
34304 KB |
c43 |
AC |
154 ms |
34304 KB |
c44 |
AC |
154 ms |
34304 KB |