結果
| 問題 |
No.62 リベリオン(Extra)
|
| コンテスト | |
| ユーザー |
maine_honzuki
|
| 提出日時 | 2020-05-10 00:30:38 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,314 bytes |
| コンパイル時間 | 1,289 ms |
| コンパイル使用メモリ | 168,844 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-07-06 09:36:23 |
| 合計ジャッジ時間 | 4,774 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 2 WA * 1 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll W, H, D, Vx, Vy;
ll gcd(ll a, ll b) {
while (b) {
ll c = b;
b = a % b;
a = c;
}
return a;
}
ll extgcd(ll a, ll b, ll& x, ll& y) {
if (b) {
ll d = extgcd(b, a % b, y, x);
y -= a / b * x;
return d;
} else {
x = 1;
y = 0;
return a;
}
}
ll rem(ll& a, ll b) {
return ((a %= b) += b) %= b;
}
bool hit(ll Mx, ll My) {
ll w = 2 * W, h = 2 * H;
cerr << Mx << " " << My << endl;
ll a, b;
ll g = extgcd(Vx, 2 * W, a, b);
if (Mx % g)
return false;
rem(a, w);
a *= Mx / g;
rem(a, w / g);
cerr << "a:" << a << endl;
ll can_add_to_a = w / g;
My -= Vy * (a % (h));
rem(My, h);
cerr << "My:" << My << endl;
ll c, d;
g = extgcd(Vy * can_add_to_a, h, c, d);
rem(c, h / gcd(h, Vy) * can_add_to_a);
cerr << "c:" << c << endl;
cerr << "g:" << g << endl;
if (My % g)
return false;
/*
while (c < a)
c += 2 * H / g;
*/
cerr << c << endl;
return c <= D;
}
int main() {
int Q;
cin >> Q;
while (Q--) {
ll Mx, My, Hx, Hy;
cin >> W >> H >> D >> Mx >> My >> Hx >> Hy >> Vx >> Vy;
ll g = gcd(abs(Vx), abs(Vy));
Vx /= g;
Vy /= g;
D *= g;
if (Vx < 0) {
Vx *= -1;
Hx = W - Hx;
Mx = W - Mx;
}
if (Vy < 0) {
Vy *= -1;
Hy = H - Hy;
My = H - My;
}
Vx %= 2 * W;
Vy %= 2 * H;
ll mx, my;
bool ans = false;
cerr << Vx << " " << Vy << endl;
for (int i = 0; i < 4; i++) {
if (i < 2)
mx = Mx;
else
mx = W * 2 - Mx;
if (i % 2 == 0)
my = My;
else
my = H * 2 - My;
mx -= Hx;
my -= Hy;
if (mx < 0)
mx += W * 2;
if (my < 0)
my += H * 2;
bool flag = hit(mx, my);
ans |= flag;
cerr << i << " " << (flag ? "Yes" : "No") << endl;
cerr << endl;
}
cout << (ans ? "Hit" : "Miss") << endl;
}
}
maine_honzuki