結果
問題 | No.1304 あなたは基本が何か知っていますか?私は知っています. |
ユーザー |
![]() |
提出日時 | 2023-03-20 02:10:46 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 379 ms / 2,000 ms |
コード長 | 1,889 bytes |
コンパイル時間 | 1,771 ms |
コンパイル使用メモリ | 82,200 KB |
実行使用メモリ | 257,452 KB |
最終ジャッジ日時 | 2024-06-12 18:14:44 |
合計ジャッジ時間 | 11,345 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 45 RE * 29 |
ソースコード
import sysreadline=sys.stdin.readlinedef Hadamard(polynomial,n,mod=0,inverse=False):polynomial_=[x for x in polynomial]+[0]*((1<<n)-len(polynomial))for bit in range(n):for i in range(1<<n):ii=i^(1<<bit)if i>ii:continuepolynomial_[i],polynomial_[ii]=polynomial_[i]+polynomial_[ii],polynomial_[i]-polynomial_[ii]if mod:polynomial_[i]%=modpolynomial_[ii]%=modif inverse:if mod:inve_2=pow((mod+1)//2,n)for i in range(1<<n):polynomial_[i]*=inve_2polynomial_[i]%=modelse:pow_2=pow(2,n)for i in range(1<<n):polynomial_[i]/=pow_2return polynomial_def XOR_Convolution(polynomial0,polynomial1,mod=0):n=(max(len(polynomial0),len(polynomial1))-1).bit_length()Hadamard_polynomial0=Hadamard(polynomial0,n,mod=mod)Hadamard_polynomial1=Hadamard(polynomial1,n,mod=mod)if mod:convolution=[x*y%mod for x,y in zip(Hadamard_polynomial0,Hadamard_polynomial1)]else:convolution=[x*y for x,y in zip(Hadamard_polynomial0,Hadamard_polynomial1)]convolution=Hadamard(convolution,n,mod=mod,inverse=True)return convolutionN,K,X,Y=map(int,readline().split())Y+=1A=list(map(int,readline().split()))mod=998244353dp=[[0]*(1<<10) for i in range(1<<10)]for a in A:dp[a][a]=1for n in range(1,N):prev=dpdp=[[0]*(1<<10) for i in range(1<<10)]cnt=[0]*(1<<10)for i in range(1<<10):for j in range(1<<10):cnt[j]+=prev[i][j]cnt[j]%=modfor a in A:for j in range(1<<10):dp[a][a^j]+=cnt[j]-prev[a][j]dp[a][a^j]%modans=0for i in range(1<<10):for j in range(X,Y):ans+=dp[i][j]ans%=modprint(ans)