結果
問題 | No.1547 [Cherry 2nd Tune *] 偶然の勝利の確率 |
ユーザー |
![]() |
提出日時 | 2025-02-23 21:54:33 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 585 ms / 2,000 ms |
コード長 | 855 bytes |
コンパイル時間 | 326 ms |
コンパイル使用メモリ | 82,584 KB |
実行使用メモリ | 77,312 KB |
最終ジャッジ日時 | 2025-02-23 21:54:45 |
合計ジャッジ時間 | 10,661 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 36 |
ソースコード
M=998244353 ma,na,s=map(int,input().split()) mb,nb,t=map(int,input().split()) k=int(input()) pa=ma*pow(na,M-2,M)%M pb=mb*pow(nb,M-2,M)%M l=s+1+t def seki(a,b): c=[[0]*l for i in range(l)] for i in range(l): for j in range(l): for k in range(l): c[i][j]+=a[i][k]*b[k][j] c[i][j]%=M return c A1=[[0]*l for i in range(l)] A1[0][0]=1 A1[-1][-1]=1 for i in range(-t+1,s): for j in range(i,s+1): A1[j+t][i+t]+=pow(pa,j-i,M)*((1-pa) if j<s else 1) A1[j+t][i+t]%=M A2=[[0]*l for i in range(l)] A2[0][0]=1 A2[-1][-1]=1 for i in range(-t+1,s): for j in range(-t,i+1): A2[j+t][i+t]+=pow(pb,i-j,M)*((1-pb) if j>-t else 1) A2[j+t][i+t]%=M A=seki(A2,A1) B=[[0]*l for i in range(l)] for i in range(l): B[i][i]=1 for i in range(30): if (k>>i)&1: B=seki(A,B) A=seki(A,A) print(B[-1][t]) print(B[0][t])