結果
| 問題 | No.61 リベリオン |
| コンテスト | |
| ユーザー |
yaoshimax
|
| 提出日時 | 2015-02-22 23:10:26 |
| 言語 | PyPy2 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 511 ms / 5,000 ms |
| コード長 | 1,389 bytes |
| 記録 | |
| コンパイル時間 | 249 ms |
| コンパイル使用メモリ | 77,464 KB |
| 最終ジャッジ日時 | 2025-12-03 14:09:30 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
| 純コード判定しない問題か言語 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 4 |
ソースコード
def gcd(a,b):
if b<a:
return gcd(b,a)
if b%a==0:
return a
return gcd(b%a,a)
Q=int(raw_input())
for i in range(Q):
W,H,D,Mx,My,Hx,Hy,Vx,Vy=map(int,raw_input().split())
Vg=max(abs(Vx),abs(Vy))
if Vx!=0 and Vy!=0:
Vg=gcd(abs(Vx),abs(Vy))
Vx/=Vg
Vy/=Vg
D*=Vg
table = [[[False for i in range(4)] for j in range(H+1)] for k in range(W+1)]
table[Hx][Hy][0]=True
x,y,dx,dy=Hx,Hy,Vx,Vy
for di in range(D):
nx,ny=x+dx,y+dy
while nx > W or ny > H or nx <0 or ny < 0:
if nx > W:
nx=2*W-nx
dx*=-1
if ny > H:
ny=2*H-ny
dy*=-1
if nx < 0:
nx=-nx
dx*=-1
if ny < 0:
ny=-ny
dy*=-1
flag = 0
if Vx!=dx:
flag+=1
if Vy!=dy:
flag+=2
#print nx,ny,flag
if table[nx][ny][flag]:
break
table[nx][ny][flag]=True
x,y=nx,ny
#if table[Mx][My][0] or table[W-Mx][My][1] or table[Mx][H-My][2] or table[W-Mx][H-My][3]:
if table[Mx][My][0] or table[Mx][My][1] or table[Mx][My][2] or table[Mx][My][3]:
print "Hit"
else:
print "Miss"
# find k s.t. Hx+kVx= 2mW+Mx and Hy+kVy = 2nH+My
# find k s.t. Hx+kVx= 2mW-Mx and Hy+kVy = 2nH-My
yaoshimax