結果

問題 No.1547 [Cherry 2nd Tune *] 偶然の勝利の確率
ユーザー ああいいああいい
提出日時 2022-03-15 21:57:04
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 550 ms / 2,000 ms
コード長 1,577 bytes
コンパイル時間 151 ms
コンパイル使用メモリ 82,452 KB
実行使用メモリ 77,148 KB
最終ジャッジ日時 2024-09-22 14:19:10
合計ジャッジ時間 9,427 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 39 ms
52,948 KB
testcase_01 AC 50 ms
61,968 KB
testcase_02 AC 79 ms
73,708 KB
testcase_03 AC 46 ms
62,172 KB
testcase_04 AC 53 ms
64,512 KB
testcase_05 AC 47 ms
60,816 KB
testcase_06 AC 48 ms
62,432 KB
testcase_07 AC 48 ms
62,736 KB
testcase_08 AC 44 ms
60,548 KB
testcase_09 AC 53 ms
62,540 KB
testcase_10 AC 48 ms
62,140 KB
testcase_11 AC 55 ms
65,232 KB
testcase_12 AC 45 ms
60,860 KB
testcase_13 AC 152 ms
76,740 KB
testcase_14 AC 119 ms
76,296 KB
testcase_15 AC 83 ms
73,284 KB
testcase_16 AC 98 ms
74,824 KB
testcase_17 AC 97 ms
74,128 KB
testcase_18 AC 96 ms
73,992 KB
testcase_19 AC 70 ms
70,960 KB
testcase_20 AC 331 ms
76,560 KB
testcase_21 AC 85 ms
73,808 KB
testcase_22 AC 43 ms
60,936 KB
testcase_23 AC 547 ms
76,924 KB
testcase_24 AC 546 ms
76,968 KB
testcase_25 AC 546 ms
77,148 KB
testcase_26 AC 550 ms
77,004 KB
testcase_27 AC 548 ms
77,032 KB
testcase_28 AC 548 ms
77,072 KB
testcase_29 AC 546 ms
76,928 KB
testcase_30 AC 544 ms
77,068 KB
testcase_31 AC 547 ms
76,888 KB
testcase_32 AC 545 ms
76,992 KB
testcase_33 AC 549 ms
76,940 KB
testcase_34 AC 88 ms
69,764 KB
testcase_35 AC 88 ms
70,072 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

P = 998244353
m,n,S = map(int,input().split())
pa = m * pow(n,P-2,P) % P
qa = (1 - pa) % P
m,n,T = map(int,input().split())
pb = m * pow(n,P-2,P) % P
qb = (1 - pb) % P
K = int(input())
C = 205
SA = [0] * C
SB = [0] * C
now = qa
SA[0] = qa
for i in range(1,C):
    now = now * pa % P
    SA[i] = now
now = qb
SB[0] = now
for i in range(1,C):
    now = now * pb % P
    SB[i] = now

n = S + T + 1
def seki(x,y):
    l = [[0] * n for _ in range(n)]
    for i in range(n):
        for j in range(n):
            for k in range(n):
                l[i][j] = (l[i][j] + x[i][k] * y[k][j]) % P
    return l
e = [[0] * n for _ in range(n)]
for i in range(n):
    e[i][i] = 1
R = [[0] * n for _ in range(n)]
for j in range(-T,S+1):
    for i in range(-T,S+1):
        if i == S:
            if j != S:continue
            R[S-j][S-i] = 1
            continue
        if i == -T:
            if j != -T:continue
            R[S-j][S-i] = 1
            continue
        if j == S:
            tmp = pow(pa,S - i,P)
            R[S-j][S-i] = tmp
            continue
        if j == -T:
            tmp = 0
            for k in range(i,S):
                tmp += SA[k-i] * pow(pb,k-j,P) % P
                tmp %= P
            R[S-j][S-i] = tmp
            continue
        else:
            delta = max(i,j)
            tmp = 0
            for k in range(delta,S):
                tmp += SA[k-i] * SB[k - j] % P
                tmp %= P
            R[S-j][S-i] = tmp
while K:
    if K & 1:
        e = seki(e,R)
    R = seki(R,R)
    K >>= 1

a = e[0][S]
b = e[-1][S]

print(a)
print(b)
0