解這類型題目需要平面空間概念,以及久遠的數學公式。
平行四邊形,求第四點
這題比較簡單,就沒寫測試系統
import sys
def inp():
sinp=sys.stdin.readline()
while(sinp!=""):
sinp=sinp.replace("\n","")
coord=list(map(float,sinp.split()))
print("%.3f %.3f"%fourpo(coord))#%.3f是因為只取到小數點後三位
sinp=sys.stdin.readline()
測資讀取
測資會給你(x,y)^4
其中一組是重複的
會組成三角形
0.000 0.000 0.000 1.000 0.000 1.000 1.000 1.000
def fourpo(co):
for i in range(3):#總共比i輪
for j in range(3-i):#每輪比j次
if(co[0+2*i]==co[2*(i+1)+2*j]):#重複的話
x=sum(co[::2])-co[0+2*i]*3#全部座標軸相加,減去重複座標軸三次
y=sum(co[1::2])-co[1+2*i]*3
return x,y
inp()
尋找重複的C點
迴圈(i)=3 | 迴圈(j)=3-i | co[0+2^i] | co[2^(i+1)+2^j] |
---|---|---|---|
0 | 0 | 0 | 2 |
0 | 1 | 0 | 4 |
0 | 2 | 0 | 6 |
1 | 0 | 2 | 4 |
1 | 1 | 2 | 6 |
2 | 0 | 2 | 6 |
平行四邊形ABCD公式,A+C=B+D | |||
推導後,A=B+D-C | |||
重複的那一點必為C | |||
所以四點相加後,扣掉重複二點,在減掉公式的C,就是答案。 | |||
測資 | B | D | C |
----- | -------- | ------------- | - |
R1= | B | +D | |
R2= | B | +D | -C |
不難,不過要細心。
感謝撥冗閱讀