矩形的面积

给定二维笛卡尔坐标系下两个边平行于坐标轴的矩形。请计算这两个矩形所覆盖的区域的面积。

输入描述

输入第一行为四个整数 ,表示第一个矩形的两个对角坐标 ;

第二行为四个整数,表示第二个矩形的两个对角坐标 。

输出描述

每组测试用例在单独的一行上输出一个整数表示输入的两个矩形覆盖的区域的总面积。

样例说明

对于第一组样例,其可视化如下图。

case 1

对于第二组样例,其可视化如下图。

case 2

对于第三组样例,其可视化如下图。

case 3

对于第四组样例,其可视化如下图。

case 4

  测试输入关于“测试输入”的帮助 期待的输出关于“期待的输出”的帮助 时间限制关于“时间限制”的帮助 内存限制关于“内存限制”的帮助 额外进程关于“{$a} 个额外进程”的帮助
测试用例 1 以文本方式显示
  1. 0 0 3 2↵
  2. 4 1 5 3↵
以文本方式显示
  1. 8↵
1秒 64M 0
测试用例 2 以文本方式显示
  1. 0 0 3 2↵
  2. 2 1 4 4↵
以文本方式显示
  1. 11↵
1秒 64M 0
测试用例 3 以文本方式显示
  1. 0 0 3 2↵
  2. 1 1 2 3↵
以文本方式显示
  1. 7↵
1秒 64M 0
测试用例 4 以文本方式显示
  1. 0 0 5 4↵
  2. 2 1 4 3↵
以文本方式显示
  1. 20↵
1秒 64M 0
#include<stdio.h>  
#include<math.h>  
#include<stdlib.h>  
  
int main(){  
    long long s,s1,s2,c=0;  
    long long a[2][2],b[2][2],x=0,y=0;  
      
    scanf("%lld%lld%lld%lld",&a[0][0],&a[0][1],&a[1][0],&a[1][1]);  
    scanf("%lld%lld%lld%lld",&b[0][0],&b[0][1],&b[1][0],&b[1][1]);  
    s1=(a[0][0]-a[1][0])*(a[0][1]-a[1][1]);  
    s2=(b[0][0]-b[1][0])*(b[0][1]-b[1][1]);  
  
    if(a[0][0]>=b[1][0]||a[1][0]<=b[0][0]) x=0; //独立   
    else  
    {  
        if(a[1][0]>=b[1][0]&&a[0][0]<=b[0][0])  //先判断包含,再判断相交   
        x=b[1][0]-b[0][0];  
        else if(b[1][0]>=a[1][0]&&b[0][0]<=a[0][0])  
        x=a[1][0]-a[0][0];  
        else if(a[1][0]>b[0][0]&&a[1][0]<b[1][0])  
        x=a[1][0]-b[0][0];  
        else if(b[1][0]>a[0][0]&&b[1][0]<a[1][0])  
        x=b[1][0]-a[0][0];  
          
    }  
      
    if(a[0][1]>=b[1][1]||a[1][1]<=b[0][1]) y=0;  
    else  
    {     
        if(a[1][1]>=b[1][1]&&a[0][1]<=b[0][1])  
        y=b[1][1]-b[0][1];  
        else if(b[1][1]>=a[1][1]&&b[0][1]<=a[0][1])  
        y=a[1][1]-a[0][1];  
        else if(a[1][1]>b[0][1]&&a[1][1]<b[1][1])  
        y=a[1][1]-b[0][1];  
        else if(b[1][1]>a[0][1]&&b[1][1]<a[1][1])  
        y=b[1][1]-a[0][1];  
          
    }  
    c=x*y;  
    s=s1+s2-c;    
    //printf("%lld,%lld,%lld\n",x,y,c);  
    printf("%lld\n",s);  
      
}  
发布了28 篇原创文章 · 获赞 2 · 访问量 585

猜你喜欢

转载自blog.csdn.net/CN_BIT/article/details/104651820