結果
問題 | No.62 リベリオン(Extra) |
ユーザー | maspy |
提出日時 | 2020-04-18 21:16:54 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
AC
|
実行時間 | 357 ms / 5,000 ms |
コード長 | 1,288 bytes |
コンパイル時間 | 272 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 10,880 KB |
最終ジャッジ日時 | 2024-10-04 00:20:00 |
合計ジャッジ時間 | 1,792 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 30 ms
10,752 KB |
testcase_01 | AC | 30 ms
10,880 KB |
testcase_02 | AC | 116 ms
10,752 KB |
testcase_03 | AC | 117 ms
10,752 KB |
testcase_04 | AC | 357 ms
10,880 KB |
ソースコード
import sys read = sys.stdin.buffer.read readline = sys.stdin.buffer.readline readlines = sys.stdin.buffer.readlines from math import gcd import itertools def mod_inv(a, b): x, y = 1, 0 while b: q, r = divmod(a, b) a, b = b, r x, y = y, x - q * y return x, a def solve_linear_mod(a, b, mod): """ solve ax = b mod""" inv_a, d = mod_inv(a, mod) if b % d != 0: return None, None a //= d b //= d mod //= d x = inv_a * b % mod return x, mod def solve(): W, H, D, Mx, My, Hx, Hy, Vx, Vy = map(int, readline().split()) d = abs(gcd(Vx, Vy)) D *= d Vx //= d Vy //= d x1, mod1 = solve_linear_mod(Vx, Mx - Hx, W + W) x2, mod2 = solve_linear_mod(Vx, W + W - Mx - Hx, W + W) x3, mod3 = solve_linear_mod(Vy, My - Hy, H + H) x4, mod4 = solve_linear_mod(Vy, H + H - My - Hy, H + H) for (x, n), (y, m) in itertools.product(((x1, mod1), (x2, mod2)), ((x3, mod3), (x4, mod4))): if x is None or y is None: continue u, mod = solve_linear_mod(n, y - x, m) if u is None: continue u %= mod t = x + n * u if t <= D: return 'Hit' return 'Miss' Q = int(readline()) for _ in range(Q): print(solve())