出题人:董老师
描述
坐标平面上有一个矩形。四个顶点的坐标分别为 (0,0) 、 (W,0) 、 (W,H) 和 (0,H) 。给你一个点 (x,y) ,它位于矩形内或矩形边上。我们将通过 (x,y) 画一条直线,将矩形切割成两部分。求面积不大于另一部分的那一部分的最大面积。此外,请确定是否有多种方法切割矩形并获得最大面积。
输入描述
输入内容由标准输入法提供,格式如下:
W H x y
输出描述
打印面积不大于另一部分面积的部分的最大可能面积,如果有多种方法切割矩形并达到最大值,则在 "1 "后打印,否则打印 “0”。
当打印区域的绝对误差或相对误差不超过 10−9 时,将判定为正确。
用例输入 1
2 3 1 2
用例输出 1
3.000000 0
用例输入 2
2 2 1 1
用例输出 2
2.000000 1
提示
限制因素
- 1≤W,H≤109
- 0≤x≤W
- 0≤y≤H
- 输入值均为整数。
样本输出 1
第 x=1 行给出了最优切割,其他行均未给出最优切割。
#include<bits/stdc++.h> // 包含所有的标准库头文件
using namespace std; // 使用标准命名空间
double w, h, x, y; // 定义双精度浮点数变量 w、h、x、y
int main()
{
// 输入矩形的宽度 w、高度 h、以及点的坐标 x、y
cin >> w >> h >> x >> y;
// 计算矩形的面积
double s = w * h / 2;
// 输出矩形的面积,保留 6 位小数
printf("%.6lf ", s);
// 判断点是否在矩形的中心,若是则输出 1,否则输出 0
if(w / 2 == x && h / 2 == y)
cout << 1 << endl;
else
cout << 0 << endl;
return 0; // 返回 0,表示程序正常结束
}
解析:
这题并不难。因为要想让他有多种可能,只能让(x, y)这个点在方形的中央。
值也只用一个s存储总面积——w*h/2,最后保留六位小数输出。
判断是否在中央也只用知道w/2和h/2是否分别等于x和y。
代码是我的老师让我手写的,可没有用AI。看我这么辛苦,就给我