bnu 4067 美丽的花环
http://www.bnuoj.com/bnuoj/problem_show.php?pid=4067
美丽的花环
学校的草坪上最近种植了一些漂亮的花卉,所有的花围成了一个环形(内径为r,外径为R,0 <r < R) 。原来这片地上有一个用于喷灌的喷头。这个喷头可以为半径K以内的植物提供水。(如图)

现在,HK请你帮忙计算一下,花构成的环形当中有多大面积的可以由喷头提供灌溉。

Input
输入数据只有两行。
格式为(中间使用空格隔开)
x1 y1 R r
x2 y2 K
花环中心在(x1,y1) ,外径为R,内径为r。
喷头的位置为(x2,y2),覆盖范围为K。
其中,x1,y1,R,r,x2,y2,K均为实数。
Output
输出题目描述中所求面积(保留2位小数)。
Sample Input
5 5 20 10
2 2 20
Sample Output
773.09
Hint
π的值请取:3.1415926或acos(-1.0)
/*
两个圆的相交面积
*/ #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const double PI=3.141592653;
struct point
{
double x,y;
double r;
};
double dis(point a,point b)
{
return sqrt( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) );
}
double fun(point a,point b) //求两圆的相交面积函数。
{
double d=dis(a,b);
if(d>=a.r+b.r) return ;
double r=(a.r>b.r?b.r:a.r);
if( d<=fabs(a.r-b.r) ) return PI*r*r;
double A1=acos( (a.r*a.r+d*d-b.r*b.r)//a.r/d );
double A2=acos( (b.r*b.r+d*d-a.r*a.r)//b.r/d );
double res=A1*a.r*a.r + A2*b.r*b.r;
res-=sin(A1)*a.r*d;
return res;
}
int main()
{
point a,b;
double x1,y1,RR,rr;
double x2,y2,K;
while(scanf("%lf%lf%lf%lf",&x1,&y1,&RR,&rr)>)
{
scanf("%lf%lf%lf",&x2,&y2,&K);
a.x=x1;a.y=y1;a.r=RR;
b.x=x2;b.y=y2;b.r=K;
double ans1=fun(a,b); a.x=x1;a.y=y1;a.r=rr;
b.x=x2;b.y=y2;b.r=K;
double ans2=fun(a,b); printf("%.2lf\n",ans1-ans2);
}
return ;
}
bnu 4067 美丽的花环的更多相关文章
- BNU 4067 求圆并
好久没写过单组数据的题目了 QAQ 赤裸裸的模板题 #include <cstdio> #include <cstring> #include <iostream> ...
- 未完成的IT路停在回车键---2014年末总结篇
时间都去哪儿了? 一晃而过,越来越能体会到这个词的真实感.特别是过了二十岁,这种感觉越来越深刻,越来越强烈,犹如小编做公交车的时候一直向后排排倒的香樟树,还记得有首歌叫时间都哪儿了,而 ...
- 使用 jQuery & CSS3 制作美丽的照片画廊
在本教程中,我们将创建一个很好看的照片画廊效果.我们的想法是,以显示专辑作为一个滑块,而当这张专辑被选中,我们将使用一个美丽的照片堆栈展示专辑的图像.在照片堆栈视图,我们可以通过将最上面的图像移动到所 ...
- hihoCoder 1425 : What a Beautiful Lake(美丽滴湖)
hihoCoder #1425 : What a Beautiful Lake(美丽滴湖) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 ...
- (原创)即使最可怕的自然力量,也不失美丽——火山喷发(摄影,欣赏)
文中图片摘自腾讯文化:www.cal.qq.com 1.Abstract 最可怕的力量也潜含着最美丽的风景奇观,虽然不能亲眼目睹,但透过大师的视角,一样也能体会到自然力量撼动的美丽. 2.Co ...
- BNU 2418 Ultra-QuickSort (线段树求逆序对)
题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=2418 解题报告:就是给你n个数,然后让你求这个数列的逆序对是多少?题目中n的范围是n & ...
- BNU OJ 33691 / LA 4817 Calculator JAVA大数
留着当个模板用,在BNU上AC,在LA上RE……可能是java的提交方式不同??? 数和运算符各开一个栈. 表达式从左到右扫一遍,将数存成大数,遇到数压在 数的栈,运算符压在 运算符的栈,每当遇到右括 ...
- [原创]javascript prototype 对象 函数 <精简的美丽......>
精简的美丽...... javascript prototype 对象 函数 在javascript中我们都知道创建一个对象使用如下代码var x = {}对象可以拥有属性和方法var x = { ...
- 美丽的for循环语句
美丽的for循环语句 题目:用for循环语句实现四个三角形不同的形状. 图案: ---------------第一个三角形图形形状----------------**********第二个三 ...
随机推荐
- [Virtualization] VMware虚拟机三种网络模式详解(转)
原文:http://www.linuxidc.com/Linux/2016-09/135521.htm
- Leetcode 98 验证二叉搜索树 Python实现
给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二叉搜索 ...
- DataList用法总结
设计模版: 页眉<HeaderTemplate> </HeaderTemplate> 页脚<FooterTemplate> </FooterTemplat ...
- [译文]casperjs的API-mouse模块
mouse类 这个类是对各种鼠标操作的抽象,比如移动,点击,双击,滚动等.它要求一个已经获得DOM属性的casper对象,能用这种方式创造一个鼠标对象: var casper = require(&q ...
- centos启动错误:Inodes that were part of a corrupted orphan linked list found.
centos启动时,提示错误: /dev/mapper/VolGroup-lv_root contains a file system with errors,check forced. /dev/m ...
- Asp.net的生命周期之应用程序生命周期
参考:http://msdn.microsoft.com/zh-cn/library/ms178473(v=vs.100).aspx 参考:http://www.cnblogs.com/JimmyZh ...
- 2016级算法期末上机-E.中等·ModricWang's Fight with DDLs II
1125 ModricWang's Fight with DDLs II 思路 圆内被划分部分数的计算方式如下: 圆内部的每一个交点都使得总份数增加了一:除此之外,每一根直线段最后抵达圆周时,总份数也 ...
- Visual Studio进行负载测试,RIG和负载测试术语- Part II
对于一个多用户的应用程序,性能是非常重要的.性能不仅是执行的速度,它包括负载和并发方面.Visual Studio是可以用于性能测试的工具之一.Visual Studio Test版或Visual S ...
- .NET熔断之Polly
1. Net Core 中有一个被.Net 基金会认可的库 Polly,可以用来简化熔断降级的处理.主要功能:重试(Retry):断路器(Circuit-breaker):超时检测(Timeout): ...
- python3随机生成中文字符
运行环境在Python3.6下,Python2的解决方案网上有很多. ---2017.10.18 第一种方法:Unicode码 在unicode码中,汉字的范围是(0x4E00, 9FBF) impo ...