[swustoj 771] 奶牛农场

奶牛农场
Description

将军有一个用栅栏围成的矩形农场和一只奶牛,在农场的一个角落放有一只矩形的箱子,有一天将军要出门,他就把奶牛用一根绳子套牢,然后将绳子的另一端绑到了那个箱子不靠栅栏的角上,现在给定箱子的长和宽,绳子的长度,你的问题是计算奶牛能够到达的面积。

 
Input

有多组测试数据。 每一组数据为一行,三个整数,L(0<=L<=500),M,N(1<=M,N<=500),分别表示绳子的长度,箱子的两边长度。假设农场无限大。

 
Output

对于每一组测试数据,输出奶牛能够到达的面积,保留两位小数。

Sample Input

1 1 1

Sample Output

2.36

晕、最开始理解错了、

简单题、画下图就知道了。

对于其中一边,分两种情况讨论

(1) [swustoj 771] 奶牛农场

(2) [swustoj 771] 奶牛农场

#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\n",getArea(a)+getArea(b));

    }

    return 0;

}

 

你可能感兴趣的:(OJ)