ACM_圆的面积

圆的面积

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

AB是圆O的一条直径,CD、EF是两条垂直于AB的弦,并且以CD为直径的半圆和以EF为直径的半圆正好切于点T。
给定CD和EF的长度,求圆O的面积(Pi取3.1416)。

Input:

输入包含多组测试数据,每组测试数据输入两个数a(1<=a,b<=10^5),b代表CD和EF的长度。

Output:

对于每组数据,输出圆O的面积,保留两位小数。

Sample Input:

3 5
2 3

Sample Output:

26.70
10.21
解题思路:由题意得CD、EF这两条边是一定不会重合的,即在圆心的两侧。假设a=CD/2,b=EF/2,r为所求圆的半径,则当a==b时,由对称性可得r=√(2)*a,此时S=πr2=2*πa2;当a!=b时,有重叠的部分OT,列式子有:a-√(r2-a2)=b-√(r2-b2),化简得r2=a2+b2;所以此时S=π*(a2+b2),推导完毕。
AC代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define PI 3.1416
 4 int main()
 5 {
 6     double x,a,b;
 7     while(cin>>a>>b){
 8         a/=2.0;b/=2.0;
 9         if(a==b)x=2*a*a*PI;
10         else x=(a*a+b*b)*PI;
11         cout<<setiosflags(ios::fixed)<<setprecision(2)<<x<<endl;
12     }
13     return 0;
14 }
原文地址:https://www.cnblogs.com/acgoto/p/9031881.html