描述

联想公司最近要设计一个体现公司文化的 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;
}