提出 #18407878


ソースコード 拡げる

/*
after dusk passed,
there is a starry sky.
*/
#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define m_k make_pair
#define mod 924844033
#define int long long
using namespace std;
const int N=2*1e5+100;
int n,sz[N],f[N*4],g[N*4],rev[N*4],len,fac[N],inv[N];
int tot,first[N],nxt[N*2],point[N*2];
inline void add(int &a,int b){a=((a+b>mod)?a+b-mod:a+b);}
inline void del(int &a,int b){a=((a-b<0)?a-b+mod:a-b);}
inline void mul(int &a,int b){a=(a*b)%mod;}
inline int C(int n,int m){return fac[n]*inv[m]%mod*inv[n-m]%mod;}
inline int m_pow(int a,int b)
{
	int ans=1;
	while (b)
	{
		if (b&1) mul(ans,a);
		b>>=1;
		mul(a,a);
	}
	return ans;
}
inline int read()
{
	int f=1,x=0;char s=getchar();
	while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
	while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
	return x*f;
}
inline void add_edge(int x,int y)
{
	nxt[++tot]=first[x];
	first[x]=tot;
	point[tot]=y;
}
inline void change(int len)
{
	for (int i=0;i<len;i++)
	{
		rev[i]=rev[i>>1]>>1;
		if (i&1) rev[i]|=len>>1;
	}
}
inline void ntt(int y[],int len,int v)
{
	for (int i=0;i<len;i++) if (i<rev[i]) swap(y[i],y[rev[i]]);
	for (int i=2;i<=len;i<<=1)
	{
		int step=m_pow(5,(mod-1)/i);
		if (v==-1) step=m_pow(step,mod-2);
		for (int j=0;j<len;j+=i)
		{
			int x=1;
			for (int k=j;k<j+i/2;k++)
			{
				int a=y[k],b=x*y[k+i/2]%mod;
				y[k]=(a+b)%mod;
				y[k+i/2]=(a-b+mod)%mod;
				mul(x,step);
			}
		}
	}
	if (v==-1)
	{
		int invlen=m_pow(len,mod-2);
		for (int i=0;i<len;i++) mul(y[i],invlen);
	}
}
void dfs(int x,int fa)
{
	sz[x]=1;
	for (int i=first[x];i!=-1;i=nxt[i])
	{
		int u=point[i];if (u==fa) continue;
		dfs(u,x);
		sz[x]+=sz[u];
	}
}
inline void print(int y[],int len)
{
	for (int i=0;i<len;i++) printf("%lld ",y[i]);
	printf("\n");
}
signed main()
{
	tot=-1;
	memset(first,-1,sizeof(first));
	n=read();
	for (int i=1;i<n;i++)
	{
		int u=read(),v=read();
		add_edge(u,v);add_edge(v,u);
	}
	dfs(1,1);
	for (int i=2;i<=n;i++) f[sz[i]]++,f[n-sz[i]]++;
	fac[0]=1;
	for (int i=1;i<=n;i++) fac[i]=fac[i-1]*i%mod;
	inv[n]=m_pow(fac[n],mod-2);
	for (int i=n-1;i>=0;i--) inv[i]=(inv[i+1]*(i+1))%mod;
	for (int i=0;i<=n;i++) g[i]=inv[i],mul(f[i],fac[i]);
	reverse(g,g+1+n);
	len=1;while (len<=n+n) len<<=1;change(len);
	ntt(f,len,1);ntt(g,len,1);
	for (int i=0;i<len;i++) mul(f[i],g[i]);
	ntt(f,len,-1);
	for (int i=1;i<=n;i++)
	{
		int ans=n*C(n,i)%mod;
		del(ans,f[n+i]*inv[i]%mod);
		printf("%lld\n",ans);
	}
}

提出情報

提出日時
問題 F - Many Easy Problems
ユーザ SevenDawns
言語 C++ (GCC 9.2.1)
得点 1900
コード長 2528 Byte
結果 AC
実行時間 168 ms
メモリ 41744 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1900 / 1900
結果
AC × 3
AC × 48
セット名 テストケース
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
ケース名 結果 実行時間 メモリ
doublestar0 AC 153 ms 28428 KiB
doublestar1 AC 149 ms 28424 KiB
doublestar2 AC 150 ms 28440 KiB
doublestar3 AC 150 ms 28408 KiB
doublestar4 AC 150 ms 28248 KiB
example0 AC 5 ms 5268 KiB
example1 AC 4 ms 5248 KiB
example2 AC 4 ms 5172 KiB
line0 AC 160 ms 41736 KiB
line1 AC 161 ms 41544 KiB
line2 AC 162 ms 41744 KiB
line3 AC 164 ms 41520 KiB
line4 AC 160 ms 41644 KiB
maxrand0 AC 164 ms 28436 KiB
maxrand1 AC 165 ms 28312 KiB
maxrand10 AC 161 ms 28352 KiB
maxrand11 AC 161 ms 28332 KiB
maxrand12 AC 163 ms 28380 KiB
maxrand13 AC 167 ms 28252 KiB
maxrand14 AC 163 ms 28312 KiB
maxrand15 AC 163 ms 28476 KiB
maxrand16 AC 163 ms 28448 KiB
maxrand17 AC 162 ms 28328 KiB
maxrand18 AC 162 ms 28328 KiB
maxrand19 AC 164 ms 28472 KiB
maxrand2 AC 165 ms 28444 KiB
maxrand3 AC 164 ms 28440 KiB
maxrand4 AC 166 ms 28364 KiB
maxrand5 AC 168 ms 28360 KiB
maxrand6 AC 166 ms 28384 KiB
maxrand7 AC 165 ms 28332 KiB
maxrand8 AC 164 ms 28548 KiB
maxrand9 AC 164 ms 28472 KiB
rand0 AC 12 ms 5608 KiB
rand1 AC 5 ms 5188 KiB
rand2 AC 7 ms 5452 KiB
rand3 AC 8 ms 5584 KiB
rand4 AC 11 ms 5356 KiB
rand5 AC 8 ms 5520 KiB
rand6 AC 7 ms 5396 KiB
rand7 AC 8 ms 5664 KiB
rand8 AC 4 ms 5244 KiB
rand9 AC 10 ms 5424 KiB
star0 AC 151 ms 28316 KiB
star1 AC 147 ms 28440 KiB
star2 AC 149 ms 28364 KiB
star3 AC 147 ms 28468 KiB
star4 AC 150 ms 28524 KiB