結果
| 問題 |
No.1501 酔歩
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-15 22:20:05 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,621 bytes |
| コンパイル時間 | 187 ms |
| コンパイル使用メモリ | 81,704 KB |
| 実行使用メモリ | 54,508 KB |
| 最終ジャッジ日時 | 2025-04-15 22:21:44 |
| 合計ジャッジ時間 | 3,966 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | WA * 2 TLE * 1 -- * 50 |
ソースコード
import sys
import math
def main():
N, K = map(int, sys.stdin.readline().split())
A = list(map(int, sys.stdin.readline().split()))
if K == 1:
print("0")
return
if K == N:
print("1")
return
sum_num = 1 # For i=2 term (1/1)
sum_den = 1
prefix_num = 1 if K >= 2 else 0
prefix_den = 1 if K >= 2 else 1
curr_num = 1
curr_den = 1
for i in range(3, N + 1):
a_prev = A[i-3] if i-3 >= 0 else 0 # A_{i-2}
a_next = A[i-1] # A_i
curr_num *= a_prev
curr_den *= a_next
# Update sum_terms
new_sum_num = sum_num * curr_den + curr_num * sum_den
new_sum_den = sum_den * curr_den
g = math.gcd(new_sum_num, new_sum_den)
sum_num = new_sum_num // g
sum_den = new_sum_den // g
# Update prefix_sum if current i <= K
if i <= K:
new_prefix_num = prefix_num * curr_den + curr_num * prefix_den
new_prefix_den = prefix_den * curr_den
g_p = math.gcd(new_prefix_num, new_prefix_den)
prefix_num = new_prefix_num // g_p
prefix_den = new_prefix_den // g_p
# Calculate the resulting probability
numerator = prefix_num * sum_den
denominator = prefix_den * sum_num
if denominator == 0:
print("0")
return
g_total = math.gcd(numerator, denominator)
numerator //= g_total
denominator //= g_total
if numerator == 0:
print("0")
else:
print(f"{numerator}/{denominator}")
if __name__ == "__main__":
main()
lam6er