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;}
阅读全文
1 0