Submission #1835659
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD = 924844033;
const int MAXN = 200010;
inline int read() {
int x = 0, f = 1;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch=='-') f=-1;
for(; isdigit(ch); ch = getchar()) x = (x*10)+(ch^48);
return x * f;
}
inline ll qpow(ll a, ll b) {
ll res = 1;
while(b) {
if(b & 1LL) res = res * a % MOD;
b >>= 1, a = a * a % MOD;
}
return res;
}
int len, d, r[550000];
ll invlen, w[550000][2];
inline void NTT_init() {
int i;
invlen = qpow(len, MOD-2);
for(i = 0; i < len; i++) r[i] = (r[i>>1]>>1)|((i&1)<<(d-1));
ll g = qpow(5, (MOD-1)>>d);
w[0][0] = w[len][0] = 1;
for(i = 1; i < len; i++) w[i][0] = w[i-1][0]*g%MOD;
for(i = 0; i <= len; i++) w[i][1] = w[len-i][0];
}
inline void NTT(ll a[], int t) {
int i, j, k;
for(i = 0; i < len; i++) if(i < r[i]) swap(a[i], a[r[i]]);
for(i = 2; i <= len; i<<=1)
for(j = 0; j < len; j += i)
for(k = 0; k < (i>>1); k++) {
ll val = a[j+k+(i>>1)]*w[(len/i)*k][t]%MOD;
a[j+k+(i>>1)] = ((a[j+k]-val)%MOD+MOD)%MOD;
a[j+k] = (a[j+k]+val)%MOD;
}
}
ll a[550000], b[550000], fac[MAXN], ifac[MAXN];
int e, st[MAXN], to[MAXN<<1];
int nxt[MAXN<<1];
inline void Add(int u, int v) {
to[++e] = v, nxt[e] = st[u];
st[u] = e;
}
int n, c[MAXN];
ll pre[MAXN], ans[MAXN];
int dfs(int u, int fa) {
int i, sz = 1;
for(i = st[u]; i; i = nxt[i]) {
int v = to[i];
if(v == fa) continue;
sz += dfs(v, u);
}
if(u != 1) c[sz]++;
return sz;
}
inline ll C(int x, int y) {
return fac[x]*ifac[y]%MOD*ifac[x-y]%MOD;
}
int main() {
int i;
n = read();
fac[0] = 1;
for(i = 1; i <= n; i++) fac[i] = fac[i-1]*i%MOD;
ifac[n] = qpow(fac[n], MOD-2);
for(i = n; i >= 1; i--) ifac[i-1] = ifac[i]*i%MOD;
for(i = 1; i < n; i++) {
int u = read(), v = read();
Add(u, v), Add(v, u);
}
dfs(1, 0);
for(i = 1; i <= n; i++) pre[i] = pre[i-1]+c[i];
for(i = 1; i <= n; i++)
ans[i] = C(n, i)*(1+pre[n])%MOD;
for(len = 1; len <= (n<<1); len<<=1) d++;
NTT_init();
for(i = 0; i <= n; i++) a[i] = c[i]*fac[i]%MOD, b[i] = ifac[n-i];
/*for(i = 0; i <= n; i++) printf("%lld ", a[i]);
printf("\n");
for(i = 0; i <= n; i++) printf("%lld ", b[i]);
printf("\n");*/
NTT(a, 0), NTT(b, 0);
for(i = 0; i < len; i++) a[i] = a[i]*b[i]%MOD;
NTT(a, 1);
for(i = n+1; i < len; i++)
ans[i-n] = ((ans[i-n]-a[i]*invlen%MOD*ifac[i-n]%MOD)%MOD+MOD)%MOD;
/*for(i = 0; i < len; i++) printf("%lld ", a[i]*invlen%MOD);
printf("\n");
printf(":%lld\n", len*invlen%MOD);*/
for(i = 0; i < len; i++) a[i] = b[i] = 0;
for(i = 0; i <= n; i++) a[i] = c[n-i]*fac[i]%MOD, b[i] = ifac[n-i];
NTT(a, 0), NTT(b, 0);
for(i = 0; i < len; i++) a[i] = a[i]*b[i]%MOD;
NTT(a, 1);
for(i = n+1; i < len; i++)
ans[i-n] = ((ans[i-n]-a[i]*invlen%MOD*ifac[i-n]%MOD)%MOD+MOD)%MOD;
for(i = 1; i <= n; i++) printf("%lld\n", ans[i]);
return 0;
}
Submission Info
Submission Time |
|
Task |
F - Many Easy Problems |
User |
Sunshine_cfbsl |
Language |
C++14 (GCC 5.4.1) |
Score |
1900 |
Code Size |
2990 Byte |
Status |
AC |
Exec Time |
449 ms |
Memory |
40320 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
1900 / 1900 |
Status |
|
|
Set Name |
Test Cases |
Sample |
example0, example1, example2 |
All |
doublestar0, doublestar1, doublestar2, doublestar3, doublestar4, example0, example1, example2, line0, line1, line2, line3, line4, maxrand0, maxrand1, maxrand10, maxrand11, maxrand12, maxrand13, maxrand14, maxrand15, maxrand16, maxrand17, maxrand18, maxrand19, maxrand2, maxrand3, maxrand4, maxrand5, maxrand6, maxrand7, maxrand8, maxrand9, rand0, rand1, rand2, rand3, rand4, rand5, rand6, rand7, rand8, rand9, star0, star1, star2, star3, star4 |
Case Name |
Status |
Exec Time |
Memory |
doublestar0 |
AC |
432 ms |
32384 KB |
doublestar1 |
AC |
432 ms |
32384 KB |
doublestar2 |
AC |
432 ms |
32384 KB |
doublestar3 |
AC |
432 ms |
32384 KB |
doublestar4 |
AC |
434 ms |
32384 KB |
example0 |
AC |
6 ms |
16640 KB |
example1 |
AC |
6 ms |
16640 KB |
example2 |
AC |
6 ms |
16640 KB |
line0 |
AC |
440 ms |
40320 KB |
line1 |
AC |
441 ms |
40320 KB |
line2 |
AC |
441 ms |
40320 KB |
line3 |
AC |
442 ms |
40320 KB |
line4 |
AC |
441 ms |
40320 KB |
maxrand0 |
AC |
444 ms |
32384 KB |
maxrand1 |
AC |
440 ms |
32384 KB |
maxrand10 |
AC |
447 ms |
32384 KB |
maxrand11 |
AC |
440 ms |
32384 KB |
maxrand12 |
AC |
440 ms |
32384 KB |
maxrand13 |
AC |
443 ms |
32384 KB |
maxrand14 |
AC |
443 ms |
32384 KB |
maxrand15 |
AC |
443 ms |
32384 KB |
maxrand16 |
AC |
446 ms |
32384 KB |
maxrand17 |
AC |
449 ms |
32384 KB |
maxrand18 |
AC |
441 ms |
32384 KB |
maxrand19 |
AC |
439 ms |
32384 KB |
maxrand2 |
AC |
444 ms |
32384 KB |
maxrand3 |
AC |
439 ms |
32384 KB |
maxrand4 |
AC |
440 ms |
32384 KB |
maxrand5 |
AC |
440 ms |
32384 KB |
maxrand6 |
AC |
443 ms |
32384 KB |
maxrand7 |
AC |
439 ms |
32384 KB |
maxrand8 |
AC |
441 ms |
32384 KB |
maxrand9 |
AC |
439 ms |
32384 KB |
rand0 |
AC |
9 ms |
16768 KB |
rand1 |
AC |
6 ms |
16640 KB |
rand2 |
AC |
8 ms |
16640 KB |
rand3 |
AC |
9 ms |
16768 KB |
rand4 |
AC |
6 ms |
16640 KB |
rand5 |
AC |
9 ms |
16768 KB |
rand6 |
AC |
7 ms |
16640 KB |
rand7 |
AC |
9 ms |
16768 KB |
rand8 |
AC |
6 ms |
16640 KB |
rand9 |
AC |
7 ms |
16768 KB |
star0 |
AC |
428 ms |
32384 KB |
star1 |
AC |
428 ms |
32384 KB |
star2 |
AC |
432 ms |
32384 KB |
star3 |
AC |
431 ms |
32384 KB |
star4 |
AC |
428 ms |
32384 KB |