在二维平面上,给定两个矩形,满足矩形的每条边分别和坐标轴平行,求这个两个矩形的并的面积。即它们重叠在一起的总的面积。
输入
8个数,分别表示第一个矩形左下角坐标为(A,B),右上角坐标为(C,D);第二个矩形左下角坐标为(E,F),右上角坐标为(G,H)。 保证A<C,B<D,E<G,F<H。 保证所有数的绝对值不超过2*10^9,矩形并的面积≤2*10^9。
输出
输出一个数表示矩阵并的面积。
输入样例
-3 0 3 4 0 -1 9 2
输出样例
45
计算重叠部分的面积的方法是对xy坐标都求交集。
代码:
#include <iostream> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; int get(int a,int b,int c,int d) { if(c >= b || a >= d) return 0; return min(b,d) - max(a,c); } int main() { int a,b,c,d,e,f,g,h; cin >> a >> b >> c >> d >> e >> f >> g >> h; printf("%d",(c - a) * (d - b) + (g - e) * (h - f) - get(a,c,e,g) * get(b,d,f,h)); return 0; }
如果觉得有帮助,点个推荐啦~