結果
問題 | No.2628 Shrinkage |
ユーザー | miya145592 |
提出日時 | 2024-02-16 23:12:19 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,656 bytes |
コンパイル時間 | 352 ms |
コンパイル使用メモリ | 82,572 KB |
実行使用メモリ | 89,544 KB |
最終ジャッジ日時 | 2024-09-28 21:51:37 |
合計ジャッジ時間 | 5,452 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 136 ms
88,720 KB |
testcase_01 | WA | - |
testcase_02 | WA | - |
testcase_03 | WA | - |
testcase_04 | WA | - |
testcase_05 | WA | - |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | WA | - |
testcase_21 | WA | - |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | WA | - |
testcase_25 | WA | - |
testcase_26 | WA | - |
testcase_27 | WA | - |
ソースコード
from fractions import Fraction # 線分ABと線分CDの交点を求める関数 def _calc_cross_point(pointA, pointB, pointC, pointD): cross_point = (0,0) bunbo = (pointB[0] - pointA[0]) * (pointD[1] - pointC[1]) - (pointB[1] - pointA[1]) * (pointD[0] - pointC[0]) bunbo = Fraction(bunbo) # 直線が平行な場合 if (bunbo == 0): return False, cross_point vectorAC = ((pointC[0] - pointA[0]), (pointC[1] - pointA[1])) r = ((pointD[1] - pointC[1]) * vectorAC[0] - (pointD[0] - pointC[0]) * vectorAC[1]) / bunbo s = ((pointB[1] - pointA[1]) * vectorAC[0] - (pointB[0] - pointA[0]) * vectorAC[1]) / bunbo # rを使った計算の場合 distance = ((pointB[0] - pointA[0]) * r, (pointB[1] - pointA[1]) * r) #cross_point = (int(pointA[0] + distance[0]), int(pointA[1] + distance[1])) cross_point = (pointA[0] + distance[0], pointA[1] + distance[1]) # sを使った計算の場合 # distance = ((pointD[0] - pointC[0]) * s, (pointD[1] - pointC[1]) * s) # cross_point = (int(pointC[0] + distance[0]), int(pointC[1] + distance[1])) return True, cross_point import sys input = sys.stdin.readline T = int(input()) XY = [list(map(int, input().split())) for _ in range(T)] for x1, y1, x2, y2, X1, Y1, X2, Y2 in XY: ret, cp = _calc_cross_point((x1, y1), (X1, Y1), (x2, y2), (X2, Y2)) #print(ret, cp) if ret==False: print("No") continue cx, cy = cp p1c = (x1-cx)**2+(y1-cy)**2 p2c = (x2-cx)**2+(y2-cy)**2 p1q1 = (X1-x1)**2+(Y1-y1)**2 p2q2 = (X2-x2)**2+(Y2-y2)**2 if p1c*p2q2==p2c*p1q1: print("Yes") else: print("No")