描述
联想公司最近要设计一个体现公司文化的 logo。联想的设计师想出了一个方案:先画了一个顶点
O,接着画出以顶点 O 为公共顶点的、夹角为θ 的两条线段l1和l2,其中l1作为圆 C1的直径,l2作为圆 C2的直径。两个圆需要画在同一个圆形的塑料板上。请算出这个塑料板最小的面积是多少。
输入格式
输入只有一行,一共 3个浮点数 l1、l2和 θ。其中0≤l1,l2≤1000;−1000≤θ≤1000。
θ的单位是度,即当 θ 为 90度时,sinθ=1。
输出格式
输出一行,表示圆形塑料板的最小面积。结果误差在
1 0^−6以内均被认为是正确的。
样例输入1
1 1 90
样例输出1
2.2888179796
样例输入2
6 6 -666
样例输出2
59.774440524
题解
一道简单的数学几何问题,只要知道圆心在哪一个部分,就可以顺利求出来半径,这里需要用到三角函数,两边一角,求第三边,再根据第三边和已知两个半径求最大圆的半径。
代码C:
#include <stdio.h>
#include <math.h>
#define PI 3.1415926535898
int main(int argc, const char * argv[])
{
double lOne, lTwo, angle;
while (~scanf("%lf %lf %lf", &lOne, &lTwo, &angle))
{
double lThree = sqrt(lOne * lOne + lTwo * lTwo - 2 * lOne * lTwo * cos(angle / 180 * PI));
double D = lThree / 2 + lOne / 2 + lTwo / 2;
double area = PI * D / 2 * D / 2;
printf("%.10lf\n", area);
}
return 0;
}