結果
問題 |
No.1501 酔歩
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:29:34 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,347 bytes |
コンパイル時間 | 192 ms |
コンパイル使用メモリ | 81,720 KB |
実行使用メモリ | 848,756 KB |
最終ジャッジ日時 | 2025-06-12 21:30:19 |
合計ジャッジ時間 | 3,437 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | WA * 2 MLE * 1 -- * 50 |
ソースコード
import sys import math from fractions import Fraction def main(): sys.setrecursionlimit(1 << 25) N, K = map(int, sys.stdin.readline().split()) A = list(map(int, sys.stdin.readline().split())) A = [0] + A # make it 1-based if K == 1: print("0") return if K == N: print("1") return # Precompute prefix_num and prefix_den prefix_num = [1] * (N + 1) for i in range(1, N + 1): prefix_num[i] = prefix_num[i - 1] * A[i] prefix_den = [1] * (N + 1) for j in range(3, N + 1): prefix_den[j] = prefix_den[j - 1] * A[j] # Compute sum_T (sum of Tj for j=3 to N) sum_T = Fraction(0, 1) for j in range(3, N + 1): num = prefix_num[j - 2] den = prefix_den[j] Tj = Fraction(num, den) sum_T += Tj S = Fraction(1, 1) + sum_T D2 = Fraction(1, S) # Compute sum_Tk (sum of Tj from j=2 to K) sum_Tk = Fraction(0, 1) for j in range(2, K + 1): if j == 2: Tj = Fraction(1, 1) else: num = prefix_num[j - 2] den = prefix_den[j] Tj = Fraction(num, den) sum_Tk += Tj P_K = D2 * sum_Tk p = P_K.numerator q = P_K.denominator if q == 1: print(p) else: print(f"{p}/{q}") if __name__ == '__main__': main()