結果

問題 No.3404 形式群法則
コンテスト
ユーザー 👑 p-adic
提出日時 2023-10-14 08:59:56
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
TLE  
(最新)
AC  
(最初)
実行時間 -
コード長 823 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 247 ms
コンパイル使用メモリ 12,544 KB
実行使用メモリ 11,520 KB
最終ジャッジ日時 2025-12-10 23:30:45
合計ジャッジ時間 13,436 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 20 TLE * 5
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

R=range
J=lambda:map(int,input().split())
N,M,P=J()
A=[0]+list(J())
L=N+1
def C(f,g,D=N):
	return [sum(f[i-j]*g[j]for j in R(0,min(i+1,len(g))))%P for i in R(D+1)]
K=22
def S(f,g,c=1):
	g=[[1]+[0]*N,g]
	for k in R(K-2):g+=[C(g[-1],g[1])]
	h=[g[0][:],C(g[-1],g[1])]
	for l in R(N//K-1):h+=[C(h[-1],h[1])]
	k=l=0
	m=L
	a=[0]*L
	b=a[:]
	for d in R(L):
		for n in R(k,m):b[n]+=f[d]*g[k][n]*c
		k+=1
		if k==K or d==N:
			b=C(b,h[l])
			for n in R(L):a[n]=(a[n]+b[n])%P
			k,l,m,b=0,l+1,m-K,[0]*L
	return a
G=[1]
I=[1]
for i in R(1,L):
	I+=[[1,P-P//i*I[P%i]%P][i>1]]
	G+=[G[-1]*I[i]%P]
a=[d%2*[-1,1][d%4<2]*I[d]for d in R(L)]
s=[0]*L
c=[0]*L
for d in R(L):[c,s][d%2][d]=[-1,1][d%4<2]*G[d]
p=0
t=[1]
while p<N:
	p,t=p*2+1,t+[0]*(p+1)
	m=C(t,c,p)
	m=[2*(d<1)-m[d]for d in R(p+1)]
	t=C(t,m,p)
t=C(s,t)
A=S(a,A,M)
print(*S(t,A)[1:])
0