結果
問題 | No.62 リベリオン(Extra) |
ユーザー | cologne |
提出日時 | 2022-01-25 01:09:13 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 473 ms / 5,000 ms |
コード長 | 1,376 bytes |
コンパイル時間 | 285 ms |
コンパイル使用メモリ | 82,204 KB |
実行使用メモリ | 84,608 KB |
最終ジャッジ日時 | 2024-05-08 22:04:29 |
合計ジャッジ時間 | 2,965 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 40 ms
52,352 KB |
testcase_01 | AC | 41 ms
52,608 KB |
testcase_02 | AC | 473 ms
82,292 KB |
testcase_03 | AC | 473 ms
82,296 KB |
testcase_04 | AC | 442 ms
84,608 KB |
ソースコード
import sys def input(): return sys.stdin.readline().rstrip() def exgcd(a, b): if b == 0: return (1, 0) if a == 0: return (0, 1) k = a // b (x, y) = exgcd(b, a-k*b) return (y, x-k*y) def route(W, H, dx, dy): Hinv, Winv = exgcd(H, W) g = Hinv*H + Winv*W if (dy - dx) % g != 0: return float('inf') rem = dy % g W, H, dx, dy = W // g, H // g, dx // g, dy // g ans = (Hinv*H*dx + Winv*W*dy) % (H*W) return ans * g + rem def solve(W, H, D, Mx, My, Hx, Hy, Vx, Vy): if Vx < 0: Hx, Mx, Vx = W-Hx, W-Mx, -Vx if Vy < 0: Hy, My, Vy = H-Hy, H-My, -Vy if Vx == 0: dis = My-Hy if Hy < My else 2*H-(My+Hy) return Hx == Mx and dis <= D*Vy if Vy == 0: dis = Mx-Hx if Hx < Mx else 2*W-(Mx+Hx) return Hy == My and dis <= D*Vx W *= Vy D *= Vy Hx *= Vy Mx *= Vy H *= Vx D *= Vx Hy *= Vx My *= Vx # W, H, D, Mx, My, Hx, Hy return min([ route(2*W, 2*H, Mx - Hx, My - Hy), route(2*W, 2*H, 2*W-Mx - Hx, My - Hy), route(2*W, 2*H, 2*W-Mx - Hx, 2*H-My - Hy), route(2*W, 2*H, Mx - Hx, 2*H-My - Hy), ]) <= D def main(): Q = int(input()) for i in range(Q): print('Hit' if solve(*map(int, input().split())) else 'Miss') if __name__ == '__main__': main()