結果
問題 | No.2872 Depth of the Parentheses |
ユーザー |
|
提出日時 | 2024-09-06 23:19:49 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,594 ms / 2,000 ms |
コード長 | 1,525 bytes |
コンパイル時間 | 446 ms |
コンパイル使用メモリ | 82,324 KB |
実行使用メモリ | 152,364 KB |
最終ジャッジ日時 | 2024-09-06 23:20:16 |
合計ジャッジ時間 | 24,255 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 TLE * 5 |
ソースコード
def power(x, y, m):if y == 0:return 1p = power(x, y // 2, m) % mp = (p * p) % mreturn p if y % 2 == 0 else (x * p) % mdef modInverse(a, m):g = gcd(a, m)# If a and m are relatively prime, then modulo inverse is a^(m-2) mode mreturn power(a, m - 2, m)def gcd(a, b):if a == 0:return breturn gcd(b % a, a)def main():inputs = input().split()intinputs = [int(i) for i in inputs]x = intinputs[0]k = intinputs[1]# x = int(input())# k = int(input())depth = [0] * (k + 1)modwith = 998244353pleft = x * modInverse(100, modwith)pright = (100 - x) * modInverse(100, modwith)for i in range(1 << (k * 2)):op = 0best = 0prob = 1pprob = 1.0good = Truefor j in range(k * 2):if i & (1 << j):op += 1prob *= pleftelse:op -= 1prob *= prightprob %= modwithif op < 0:good = Falsebest = max(best, op)if op != 0:good = Falseif not good:best = 0depth[best] += probdepth[best] %= modwithexp = 0for i in range(k + 1):exp += depth[i] * iexp %= modwithprint((exp + modwith) % modwith)if __name__ == "__main__":main()