題目 1471:【藍橋杯】矩形面積交
阿新 • • 發佈:2021-01-22
題目 1471:【藍橋杯】矩形面積交
跟著馬老師一起刷藍橋杯
1. 題目描述
平面上有兩個矩形,它們的邊平行於直角座標系的X軸或Y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。
2. 輸入
輸入僅包含兩行,每行描述一個矩形。
在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個絕對值不超過10^7的實數表示。
3. 輸出
輸出僅包含一個實數,為交的面積,保留到小數後兩位。
4. 樣例輸入
1 1 3 3
2 2 4 4
5. 樣例輸出
1.00
6. 題解:
xy1 = list(map(float,input().split())) xy2 = list(map(float,input().split())) rx = min(max(xy1[0],xy1[2]),max(xy2[0],xy2[2])) lx = max(min(xy1[0],xy1[2]),min(xy2[0],xy2[2])) uy = min(max(xy1[1],xy1[3]),max(xy2[1],xy2[3])) dy = max(min(xy1[1],xy1[3]),min(xy2[1],xy2[3])) w,h = rx-lx,uy-dy if w<=0.0 or h<=0.00: print("0.00") else: #print((str(w*h)+"00").split(".")[0]+"."+(str(w*h)+"00").split(".")[1][:2:]) 不進位輸出小數點後兩位 print("%.2f"%(w*h))
馬老師的思路:
#思路: # 要對矩形做規範化處理。即左上角的座標要小於右下角的座標。 # 根據不同情況分別確定相交矩形左右上下,四條邊的x,y座標。 # 根據座標確定矩形的長與寬。 # 求出矩形的面積。 while True: try: a = list(map(float, input().strip().split())) b = list(map(float, input().strip().split())) # 對矩形做規範化處理 a = [min(a[0], a[2]), min(a[1], a[3]), max(a[0], a[2]), max(a[1], a[3])] b = [min(b[0], b[2]), min(b[1], b[3]), max(b[0], b[2]), max(b[1], b[3])] # 確定每條邊的座標 xl = max(a[0], b[0]) xr = min(a[2], b[2]) yup = max(a[1], b[1]) ydown = min(a[3], b[3]) # 確定矩陣的長與寬 w = xr - xl h = ydown - yup # 求出矩形的面積 if w > 0 and h > 0: print("%.2f" % (w * h)) else: print("0.00") except: break