結果
| 問題 |
No.61 リベリオン
|
| コンテスト | |
| ユーザー |
yaoshimax
|
| 提出日時 | 2015-02-22 23:10:26 |
| 言語 | Python2 (2.7.18) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,389 bytes |
| コンパイル時間 | 107 ms |
| コンパイル使用メモリ | 7,040 KB |
| 実行使用メモリ | 815,160 KB |
| 最終ジャッジ日時 | 2024-06-23 21:53:56 |
| 合計ジャッジ時間 | 2,711 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 1 MLE * 1 -- * 2 |
ソースコード
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