結果
問題 |
No.1501 酔歩
|
ユーザー |
![]() |
提出日時 | 2025-04-15 22:11:32 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,408 bytes |
コンパイル時間 | 528 ms |
コンパイル使用メモリ | 82,276 KB |
実行使用メモリ | 89,928 KB |
最終ジャッジ日時 | 2025-04-15 22:13:08 |
合計ジャッジ時間 | 6,383 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 38 WA * 15 |
ソースコード
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 max_i = N - 1 num = [0] * (max_i + 2) # 1-based indexing den = [0] * (max_i + 2) for i in range(2, max_i + 1): # Convert to 0-based index for A if i - 2 < 0: A_i_minus_1 = 0 else: A_i_minus_1 = A[i - 2] A_i_plus_1 = A[i] if i - 1 >= 2: prev_num = num[i - 1] prev_den = den[i - 1] else: # For i=2, previous is i=1 which is not processed prev_num = 0 prev_den = 1 denominator_part = (A_i_minus_1 + A_i_plus_1) * prev_den - A_i_minus_1 * prev_num numerator_i = A_i_plus_1 * prev_den g = math.gcd(numerator_i, denominator_part) num[i] = numerator_i // g den[i] = denominator_part // g p_num = 1 p_den = 1 for i in range(K, max_i + 1): a_num = num[i] a_den = den[i] p_num *= a_num p_den *= a_den g = math.gcd(p_num, p_den) p_num //= g p_den //= g if p_num == 0: print("0") else: print(f"{p_num}/{p_den}") if __name__ == '__main__': main()