HDU5979

题意:

We have a special convex that all points have the same distance to origin point.
As you know we can get N segments after linking the origin point and the points on the convex. We can also get N angles between each pair of the neighbor segments.
Now give you the data about the angle, please calculate the area of the convex

Input

There are multiple test cases.
The first line contains two integer N and D indicating the number of the points and their distance to origin. (3 <= N <= 10, 1 <= D <= 10)
The next lines contain N integers indicating the angles. The sum of the N numbers is always 360.

Output

For each test case output one float numbers indicating the area of the convex. The printed values should have 3 digits after the decimal point.

Sample Input

4 1
90 90 90 90
6 1
60 60 60 60 60 60

Sample Output

2.000
2.598

思路:

​ 大连站的签到题,给出n,k,代表凸n边形,每个顶点距离原点的距离为k。然后下一行给出n个角度a[i],角度之和等于360度。代表从上一个顶点与下一个顶点之间的夹角是a[i]度。问这个凸n边形的面积是多少?

​ 由于已知角度和两个顶点距离原点的距离,所以我们可以根据三角形面积公式s = 1 / 2 * sin(夹角度数)分别求出每个三角形的面积。n个三角形的面积求和就是凸n变形的面积。

扫描二维码关注公众号,回复: 3663723 查看本文章

代码:

#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include <algorithm>
#include <math.h>
#define pi acos(-1.0)
#define d int32_t
#define ll int64_t
#define INF 0x3f3f3f3f
#define N 100
#define mem(a) memset(a, 0, sizeof(a))
#define For(i, star, endd) for(d i = star; i <= endd; i++)
using namespace std;


d main() {
    d n;
    double t, a;
    while (scanf("%d%lf", &n, &t) == 2) {
        double s = 0;
        For(i, 0, n - 1) {
            scanf("%lf", &a);
            s += sin(pi * a / 180) * t * t / 2;
        }
        printf("%.3f\n", s);
    }
    return 0;
}

转载请注明出处!!!

如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢

猜你喜欢

转载自blog.csdn.net/Ivan_zcy/article/details/83210768
hdu