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变形的面积。

代码:

#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;
}

转载请注明出处!!!

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值