結果
| 問題 | No.2917 二重木 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-07-19 15:14:37 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 1,115 ms / 3,000 ms |
| + 18µs | |
| コード長 | 1,199 bytes |
| 記録 | |
| コンパイル時間 | 257 ms |
| コンパイル使用メモリ | 96,228 KB |
| 実行使用メモリ | 86,016 KB |
| 最終ジャッジ日時 | 2026-07-19 15:14:52 |
| 合計ジャッジ時間 | 13,765 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 35 |
ソースコード
def add(f,g):L,M=len(f),len(g);return[(f[i]+(g[i]if i<M else 0))%P for i in R(L)] def mul(f,g):L,M=len(f),len(g);return[sum(f[i-j]*g[j]for j in R(max(0,i-L+1),min(i+1,M)))%P for i in R(L)] def Composition(f,g): N=len(f) if N==1:return f N_minus=N-1 H=int(N_minus**0.5) K=N_minus//H g_power=[[]for k in R(max(2,K))] g_power[0]=[1]+[0]*(N-1) g_power[1]=(g+[0]*(N-len(g)))[:N] for k in R(2,K):g_power[k]=mul(g_power[k-1],g_power[1]) g_power2=[[]for h in R(H+1)] g_power2[0]=g_power[0] g_power2[1]=mul(g_power[-1],g_power[1]) for h in R(2,H+1):g_power2[h]=mul(g_power2[h-1],g_power2[1]) k=h=0 n_lim=N answer=[0]*N answer_h=[0]*N for d in R(N): for n in R(k,n_lim):answer_h[n]=(answer_h[n]+f[d]*g_power[k][n])%P k+=1 if k==K or d==N_minus: if h:answer_h=mul(answer_h,g_power2[h]) answer=add(answer,answer_h) k=0 h+=1 n_lim-=K answer_h=[0]*N return answer R,O=range,print N,P=map(int,input().split()) L=N+1 if N<4:O([1,3,18][N-1]%P),exit() F=[1] G=[1] I=[1] for i in R(1,L): F+=[F[-1]*i%P] I+=[[1,P-P//i*I[P%i]%P][i>1]] G+=[G[-1]*I[i]%P] f=[0]+[0 if d==P else pow(d,d-2,P)*G[d]%P for d in R(1,L)] g=[f[d]*d%P for d in R(L)] h=Composition(f,g) O(h[N]*F[N]%P)