結果

問題 No.1274 楽しい格子点
ユーザー lam6er
提出日時 2025-03-31 17:30:28
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,286 bytes
コンパイル時間 297 ms
コンパイル使用メモリ 82,736 KB
実行使用メモリ 62,168 KB
最終ジャッジ日時 2025-03-31 17:31:24
合計ジャッジ時間 4,400 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 38 WA * 19
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
from collections import deque

def main():
    A, B = map(int, sys.stdin.readline().split())
    
    move_vectors = [
        (A, B),
        (A, -B),
        (-A, B),
        (-A, -B),
        (B, A),
        (B, -A),
        (-B, A),
        (-B, -A)
    ]
    
    cutoff_s = 20  # Determined based on required precision
    
    visited = set()
    queue = deque()
    initial = (1, 1)
    visited.add(initial)
    queue.append(initial)
    
    sum_contrib = 0.0
    
    while queue:
        p, q = queue.popleft()
        s = p + q
        if s > cutoff_s:
            continue
        # Compute contribution
        contrib = 1.0
        for _ in range(s):
            contrib /= s
            if contrib < 1e-100:  # Prevent underflow by breaking early
                break
        sum_contrib += contrib
        
        for dx, dy in move_vectors:
            np = p + dx
            nq = q + dy
            if np > 0 and nq > 0:
                if (np, nq) not in visited:
                    ns = np + nq
                    if ns <= cutoff_s:
                        visited.add((np, nq))
                        queue.append((np, nq))
    
    # Print with sufficient precision
    print("{0:.12f}".format(sum_contrib))

if __name__ == "__main__":
    main()
0