UVA

来源:互联网 发布:淘宝密码对的登不上 编辑:程序博客网 时间:2024/06/03 15:36

直接暴力枚举,然后利用叉积求面积


#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <cmath>#include <set>#include <map>#include <stack>#include <queue>#include <ctype.h>#include <vector>#include <algorithm>#include <sstream>#define PI acos(-1.0)// cout << "  ===  " << endl;using namespace std;typedef long long ll;const int maxn = 500 + 7, INF = 0x3f3f3f3f, mod = 1e9+7;int n, R;struct node {    double x, y;}a[maxn];void init() {    double t;    for(int i = 0; i < n; ++i) {        scanf("%lf", &t);        t = t * PI / 180.0;        a[i].x = R * cos(t);        a[i].y = R * sin(t);    }}double area(int i, int j, int k) {    node t1, t2;    t1.x = a[j].x-a[i].x, t1.y = a[j].y-a[i].y;    t2.x = a[k].x-a[i].x, t2.y = a[k].y-a[i].y;    return (t1.y*t2.x - t1.x*t2.y) / 2.0;}void solve() {    double sum = 0;    for(int i = 0; i < n; ++i) {        for(int j = i+1; j < n; ++j) {            for(int k = j+1; k < n; ++k) {                sum += fabs(area(i, j, k));            }        }    }    printf("%lld\n", (ll)(sum+0.5) );}int main() {    while(scanf("%d%d", &n, &R) != EOF && n && R) {        init();        solve();    }    return 0;}