圆的面积
Time Limit: 2000/1000ms (Java/Others)
Problem Description:
AB是圆O的一条直径,CD、EF是两条垂直于AB的弦,并且以CD为直径的半圆和以EF为直径的半圆正好切于点T。
给定CD和EF的长度,求圆O的面积(Pi取3.1416)。
Output:
对于每组数据,输出圆O的面积,保留两位小数。
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 }