結果
問題 | No.61 リベリオン |
ユーザー | atn112323 |
提出日時 | 2017-01-04 11:21:37 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 111 ms / 5,000 ms |
コード長 | 870 bytes |
コンパイル時間 | 475 ms |
コンパイル使用メモリ | 56,536 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-13 16:15:20 |
合計ジャッジ時間 | 1,098 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,816 KB |
testcase_01 | AC | 1 ms
6,816 KB |
testcase_02 | AC | 2 ms
6,816 KB |
testcase_03 | AC | 111 ms
6,820 KB |
testcase_04 | AC | 111 ms
6,820 KB |
testcase_05 | AC | 2 ms
6,816 KB |
ソースコード
#include <iostream> using namespace std; const int MAXW = 15, MAXH = 15; int Q; int W, H, D, MX, MY, HX, HY, VX, VY; bool hit[MAXW + 1][MAXH + 1]; int gcd(int a, int b) { if (a == 0) { return b; } else { return gcd(b % a, a); } } int main() { cin >> Q; for (int i = 0; i < Q; i++) { cin >> W >> H >> D >> MX >> MY >> HX >> HY >> VX >> VY; for (int x = 0; x <= W; x++) { for (int y = 0; y <= H; y++) { hit[x][y] = false; } } int g = gcd(abs(VX), abs(VY)); VX /= g; VY /= g; D *= g; for (int i = 0; i <= min(D, (MAXW + 1) * (MAXH + 1) * 4 + 1); i++) { int x = abs(HX + i * VX) % (2 * W), y = abs(HY + i * VY) % (2 * H); if (x > W) { x = 2 * W - x; } if (y > H) { y = 2 * H - y; } hit[x][y] = true; } if (hit[MX][MY]) { cout << "Hit" << endl; } else { cout << "Miss" << endl; } } return 0; }