結果
問題 | No.2528 pop_(backfront or not) |
ユーザー | Koi |
提出日時 | 2023-11-03 22:35:21 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 461 ms / 2,000 ms |
コード長 | 763 bytes |
コンパイル時間 | 429 ms |
コンパイル使用メモリ | 82,340 KB |
実行使用メモリ | 78,592 KB |
最終ジャッジ日時 | 2024-09-25 20:58:48 |
合計ジャッジ時間 | 4,555 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 19 |
ソースコード
Mod=998244353 N=int(input()) dp=[0]*(2*N+1) dp[0]=1 facts=[] inv_facts=[] t=1 for i in range(4100+1): facts.append(t) t=t*(i+1)%Mod inv_facts.append(pow(facts[4100],-1,Mod)) for i in range(4100): inv_facts.append(inv_facts[-1]*(4100-i)%Mod) inv_facts.reverse() def Comb(n,k): if(n<k or n<0): return 0 return facts[n]*inv_facts[k]*inv_facts[n-k]%Mod for i in range(1,N+1): M=2*i+1 new_dp=[0]*(2*N+1) for j in range(M//2+1): if(j==0): continue else: new_dp[j]=dp[j-1]+dp[j-2]*Comb(j-1,2)+dp[j-1]*(j-1)*(M-j-2)%Mod+dp[j]*Comb(M-j-2,2) new_dp[j]%=Mod new_dp[M-1-j]=new_dp[j] dp=[_ for _ in new_dp] for i in range(2*N+1): print(dp[i])