結果
問題 | No.62 リベリオン(Extra) |
ユーザー |
![]() |
提出日時 | 2014-11-10 23:01:49 |
言語 | Python2 (2.7.18) |
結果 |
AC
|
実行時間 | 336 ms / 5,000 ms |
コード長 | 1,337 bytes |
コンパイル時間 | 446 ms |
コンパイル使用メモリ | 7,040 KB |
実行使用メモリ | 8,192 KB |
最終ジャッジ日時 | 2024-12-31 09:30:42 |
合計ジャッジ時間 | 1,520 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 3 |
ソースコード
import sysimport fractionsW=H=D=MX=MY=HX=HY=VX=VY=0def ext_gcd(p,q):print (p,q)if q==0:return (p,1,0)(g,y,x) = ext_gcd(q, p%q)print (p,q,g,y,x)x -= p/q%yreturn (g,x,y)def egcd(a, b):if a == 0:return (b, 0, 1)else:g, y, x = egcd(b % a, a)return (g, x - (b // a) * y, y)def calc(tx,ty):A = 2*W*VYB = -2*H*VXC = ty*VX-tx*VY+HX*VY-HY*VXg = fractions.gcd(A, -B)if C % g > 0:return FalseA /= gB /= gC /= gg,x,y=egcd(A,B);m = C*y%Atv=(ty+2*H*m-HY)/VY;tv %= 2*H*A/VY;if tv<0:tv += 2*H*A/VY;return tv<=DQ = input()while Q > 0:Q -= 1W,H,D,MX,MY,HX,HY,VX,VY=map(int,raw_input().strip().split())if VX < 0:MX = W - MXHX = W - HXVX = -VXif VY < 0:MY = H - MYHY = H - HYVY = -VYif VX == 0:if MX==HX and ((MY>HY and (MY-HY)<=D*VY) or (MY<HY and (2*H-MY-HY)<=D*VY)):print "Hit"else:print "Miss"continueif VY == 0:if MY==HY and ((MX>HX and (MX-HX)<=D*VX) or (MX<HX and (2*W-MX-HX)<=D*VX)):print "Hit"else:print "Miss"continueg = fractions.gcd(VX, VY)D *= gVX /= gVY /= gif calc(MX,MY) or calc(2*W-MX,MY) or calc(MX,2*H-MY) or calc(2*W-MX,2*H-MY):print "Hit"else:print "Miss"