列表

详情


NC222528. 手动计算

描述

LF是一个计算几何大佬,他每天都要做114514道几何题来锻炼自己的计算几何能力。但是今天LF做剩一道题的时候他竟然发现他这道题他不会做,这道题的题意是这样的:
平面上有两个椭圆,这两个椭圆的中心都是(0,0),且一个椭圆的两个焦点在x轴上,一个椭圆的两个焦点在y轴上,给出这两个椭圆的方程,求他们面积的并的大小。
这道题实在是太难了,于是LF找到了你,你能帮他完成这个艰巨的任务吗?

输入描述

输入第一行一个整数,表示数据组数。
接下来共T行,每行四个实数a,b,c,d,表示第一个椭圆的方程为,第二个椭圆的方程为, 数据保证a,b,c,d最多两位小数, 且

输出描述

输出共T行,每行一个实数表示该组数据中这两个椭圆面积的并的大小,保留一位小数。

示例1

输入:

3
2 1 1 2
3 2 1 2
3 2 1 4

输出:

8.9
18.8
23.9

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 136ms, 内存消耗: 404K, 提交时间: 2021-06-03 09:38:18

#include<iostream>
using namespace std;
int main()
{
	int n;
	double i,j,a,b,c,d,num;
	scanf("%d",&n);
	while(n--)
	{
		num=0;
		cin>>a>>b>>c>>d;
		for(i=-8;i<=8;i+=0.01)
			for(j=-8;j<=8;j+=0.01)
				if(i*i/a/a+j*j/b/b<=1||i*i/c/c+j*j/d/d<=1)
				num++;
		printf("%.1lf\n",num/10000);
	}
	return 0;
}

上一题