結果

問題 No.1152 10億ゲーム
ユーザー kimiyuki
提出日時 2020-08-16 01:32:43
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
RE  
実行時間 -
コード長 1,215 bytes
コンパイル時間 129 ms
コンパイル使用メモリ 12,544 KB
実行使用メモリ 28,576 KB
平均クエリ数 24.76
最終ジャッジ日時 2024-07-17 05:54:52
合計ジャッジ時間 9,333 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 20 RE * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

#!/usr/bin/env python3
import sys
from typing import *

def pack(x: int, y: int) -> int:
    return 2 ** x * 5 ** y

def unpack(n: int) -> Tuple[int, int]:
    x, y = 0, 0
    while n % 2 == 0:
        x += 1
        n //= 2
    while n % 5 == 0:
        y += 1
        n //= 5
    assert n == 1
    return x, y

H = 10
W = 10
def solve(a: int, b: int) -> int:
    ax, ay = unpack(a)
    bx, by = unpack(b)
    swappped = False
    if abs(bx - ax) > abs(by - ay):
        swappped = True
        ax, ay = ay, ax
        bx, by = by, bx
    if abs(bx - ax) + abs(by - ay) == 1:
        ax = bx
        ay = by
    elif bx <= ax - 2:
        ax -= 1
    elif bx >= ax + 2:
        ax += 1
    elif by < ay:
        ay -= 1
    elif by > ay:
        ay += 1
    elif bx < ax:
        ax -= 1
    elif bx > ax:
        ax += 1
    else:
        assert False
    if swappped:
        ax, ay = ay, ax
        bx, by = by, bx
    return pack(ax, ay)

def main():
    a, b = map(int, input().split())
    while True:
        a = solve(a, b)
        print(a)
        sys.stdout.flush()
        if a == b:
            break
        b = int(input())
        if a == b:
            break

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