奶牛农场
Description
将军有一个用栅栏围成的矩形农场和一只奶牛,在农场的一个角落放有一只矩形的箱子,有一天将军要出门,他就把奶牛用一根绳子套牢,然后将绳子的另一端绑到了那个箱子不靠栅栏的角上,现在给定箱子的长和宽,绳子的长度,你的问题是计算奶牛能够到达的面积。
Input
有多组测试数据。 每一组数据为一行,三个整数,L(0<=L<=500),M,N(1<=M,N<=500),分别表示绳子的长度,箱子的两边长度。假设农场无限大。
Output
对于每一组测试数据,输出奶牛能够到达的面积,保留两位小数。
Sample Input
1 1 1
Sample Output
2.36
晕、最开始理解错了、
简单题、画下图就知道了。
对于其中一边,分两种情况讨论
(1)
(2)
#include<iostream> #include<algorithm> #include<cstdio> #include<cmath> #include<cstring> using namespace std; #define PI acos(-1.0) double r,a,b; double getArea(double n) { if(r<=n){ double angel=0.75*PI; return r*r*angel/2; } else{ double angel1=acos(n/r); double angel2=0.75*PI-angel1; return r*r*angel2/2+0.5*n*r*sin(angel1); } } int main() { while(scanf("%lf%lf%lf",&r,&a,&b)!=EOF) { printf("%.2f ",getArea(a)+getArea(b)); } return 0; }