4 条题解

  • 1
    @ 2022-12-13 10:36:05
    #include <bits/stdc++.h>
    using namespace std; 
    int main()
    {
        double x1,y1,x2,y2;   
        double x3,y3,x4,y4; 
        double m1,n1;//交集左上角坐标
        double m2,n2;//交集右下角坐标
        cin>>x1>>y1>>x2>>y2;
        cin>>x3>>y3>>x4>>y4; 
        m1 = max(min(x1,x2),min(x3,x4));
        n1 = max(min(y1,y2),min(y3,y4));
        m2 = min(max(x1,x2),max(x3,x4));
        n2 = min(max(y1,y2),max(y3,y4));
        cout<<fixed<<setprecision(2); 
        if(m2>m1 && n2>n1)
            cout<<(m2 - m1)*(n2 - n1);
        else
            cout<<0.0;
        return 0;
    }
    
    • 1
      @ 2022-5-10 14:45:28

      保留 x 位小数

      方法 1

      • 头文件:#include <cstdio>
      • 语句: printf("%.xf", a);

      方法 2

      • 头文件:#include<iostream>#include<iomanip>
      • 语句:cout << fixed << setprecision(x) << a;

      注意

      如果题目说保留 xx 位小数,那么就按照这种方式输出就可以了。

      #include<iostream>
      #include<iomanip>
      using namespace std;
      int main()
      {
          double a=3.14159265857;
          cout << fixed << setprecision(x) << a;
          x代表具体要保留几位。
      
          请务必自己多敲几遍代码,这个单词比较长避免考场出到原题自己单词忘了
      }
      
      #include<iostream>
      #include <cstdio>
      using namespace std;
      int main()
      {
          double a=3.14159265857;
          printf("%.xf", a);
          x代表具体要保留几位。
      
          请务必自己多敲几遍代码,这个单词比较长避免考场出到原题自己单词忘了
      }
      
      
      • 0
        @ 2023-4-4 17:04:37

        写成一坨

        #include<bits/stdc++.h>
        using namespace std;
        int main()
        {
            double ax1,ax2,ay1,ay2,bx1,bx2,by1,by2;
            cin>>ax1>>ay1>>ax2>>ay2>>bx1>>by1>>bx2>>by2;
            double cx1=max(min(ax1,ax2),min(bx1,bx2)),cy1=max(min(ay1,ay2),min(by1,by2)),cx2=min(max(ax1,ax2),max(bx1,bx2)),cy2=min(max(ay1,ay2),max(by1,by2));
            if (cx2>cx1&&cy2>cy1)
                cout<<fixed<<setprecision(2)<<(cx2-cx1)*(cy2-cy1);
            else
                cout<<"0.00";
            return 0;
        }
        
        • 0
          @ 2022-5-27 13:36:47

          针对这道题,我们可以由输入得到两个矩形的相对顶点的坐标

          第一个矩形顶点坐标:(x1,y1)(x2,y2) 第二个:(x3,y3)(x4,y4)

          想要求得它两相交的矩形的面积,我们只需要求出相交的矩形的相对顶点坐标(m1,n1)(m2,n2),如果m2-m1和n2-n1大于0,就代表有相交的矩形,我们直接输出(m2-m1)*(n2-n1),,其余的情况代表没有相交的矩形,直接输出0.00

          x=m2-m1;
          y=n2-n1;
          if(x>0 && y>0) cout<<fixed<<setprecision(2)<<x*y;
          else  cout<<fixed<<setprecision(2)<<0.00;
          

          现在的问题就是(m1,n1)(m2,n2)怎么求

          比如m1,他就是在x1,x2里面找较小的值,也在x3,x4找较小的值,在找的的值里面选取最大的值,就是我们的m1了(可以画图去试着理解一下)剩下的以此类推

          m1 = max(min(x1,x2),min(x3,x4));
          n1 = max(min(y1,y2),min(y3,y4));
          m2 = min(max(x1,x2),max(x3,x4));
          n2 = min(max(y1,y2),max(y3,y4));
          
          • 1

          信息

          ID
          837
          时间
          1000ms
          内存
          512MiB
          难度
          5
          标签
          递交数
          107
          已通过
          39
          上传者