首页 > 分享 > 花园浇水面积

花园浇水面积

花园浇水面积

最新推荐文章于 2020-01-23 11:42:56 发布

Susan_330818 于 2018-11-30 21:58:53 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

题目描述

Alice有一个无穷大的花园,上面种满了五颜六色的花,非常漂亮。为了浇灌这些花,Alice在花园中修建了两个浇水喷头,每个喷头可以给以它中心的一定距离内的花浇水。现在请你告诉Alice,她修建的两个喷头可以给多大面积的花园浇水。
多组数据输入,现需要你输入下面有关数据:

x1:第一个喷头的横坐标(-100 <= x1 <= 100);

y1:第一个喷头的纵坐标(-100 <= y1 <= 100);

r1:第一个喷头的浇灌半径(-100 <= r1 <= 100);

x2:第二个喷头的横坐标(-100 <= x2 <= 100);

y2:第二个喷头的纵坐标(-100 <= y2 <= 100);

r2:第二个喷头的浇灌半径(-100 <= r2 <= 100);

 
输出喷头喷水的最大覆盖面积,结果保留小数点后6位。

输入

0 0 1 1 1 1

输出

5.712389

样例输入

-27 -42 8 30 -28 50

样例输出

8055.043564

提示

计算几何问题,注意精度

来源/分类

绿色计算 

#include<stdio.h>

#include<math.h>

const double P = acos(-1.0);

int main()

{

double x1, y1, r1, x2, y2, r2;

while (scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &r1, &x2, &y2, &r2) != EOF)

{

double s11,s12,s2,s0,s, d,o1,o2,q,h1,h2;

q = sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));

d = sqrt((r1 + r2 + q)*(r1 + r2 - q)*(r1 - r2 + q)*(r2 - r1 + q)) / q;

o1 = 2*asin(d / (2 * r1));

o1 = 180.0 * o1 / P;

s11 = o1 /360 * P*r1*r1;

o2 = 2*asin(d / (2 * r2));

o2 = 180.0 * o2 / P;

s12 = o2 /360 * P*r2*r2;

s2 = 1 / 2.0*d*q;

s0 = s11 + s12 - s2;

if (q >= (r1 + r2))

{

s = P * r1*r1 + P * r2*r2;

}

else

{

s = P * r1*r1 + P * r2*r2 - s0;

}

printf("%.6lfn", s);

}

return 0;

}

abs为整型的绝对值,fabs为浮点型的绝对值。

相关知识

花园浇水面积
花园日记15:浇水、浇水,一天都在浇水
给花园植物浇水的最佳时间
小面积花园设计方法谁能指教下
花园浇水工具厂家
工厂直接花园浇水穗 Plat 花水瓶滴灌花园工具
150平米的房子这样装修面积大了1倍,装修只花13万元!-天馨花园装修
扎心!花上千万买的排屋,花园面积有问题,投诉反遭报复……
如果庭院面积够大,可设计成英式自然风花园,如仙境一般
同面积的私家花园水景该如何设计

网址: 花园浇水面积 https://m.huajiangbk.com/newsview190908.html

所属分类:花卉
上一篇: 全面解析:花草养护的最佳方法与技
下一篇: 花草养护全攻略