[藍橋杯][基礎練習VIP]矩形面積交

一葉之修發表於2019-03-06

題目描述

平面上有兩個矩形,它們的邊平行於直角座標系的X軸或Y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。

輸入

輸入僅包含兩行,每行描述一個矩形。 

在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個絕對值不超過10^7的實數表示。

輸出

輸出僅包含一個實數,為交的面積,保留到小數後兩位。 

樣例輸入

1  1  3  3 

2  2  4  4 

樣例輸出

1.00

簡單的幾何題,但不熟悉幾何題= =

import java.text.DecimalFormat;
import java.util.Scanner;

public class 矩形面積交 {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		DecimalFormat df = new DecimalFormat("0.00");
		double x1,y1,x2,y2,x3,y3,x4,y4;
		x1 = in.nextDouble();
		y1 = in.nextDouble();
		x2 = in.nextDouble();
		y2 = in.nextDouble();
		x3 = in.nextDouble();
		y3 = in.nextDouble();
		x4 = in.nextDouble();
		y4 = in.nextDouble();
		double m1,n1,m2,n2;//(m1,n1)為右下的矩陣的左上點,(m1,n1)為左上的矩陣的右上點
		
		m1 = Math.max(Math.min(x1, x2), Math.min(x3, x4));//取小找左,取大找右
		n1 = Math.max(Math.min(y1, y2), Math.min(y3, y4));
		m2 = Math.min(Math.max(x1, x2), Math.max(x3, x4));//取小找左,取大找右
		n2 = Math.min(Math.max(y1, y2), Math.max(y3, y4));
//		System.out.println(m1+" "+n1+" "+m2+" "+n2);
		if(m2-m1>0 && n2-n1>0)
			System.out.println(df.format((m2-m1)*(n2-n1)));
		else 
			System.out.println("0.00");
		
	}

}

 

相關文章