三重循环暴力三个点,叉积计算三角形面积求和,但是海伦公式超时,建议还是看看大佬容斥的那种解法
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> using namespace std; const int maxn=500+10; const double pi=acos(-1); struct note { double x,y; }aa[maxn]; int n,cnt; double r; void addpoint(double d) { d=d*pi/180.0; cnt++; aa[cnt].x=r*cos(d); aa[cnt].y=r*sin(d); } double mianji(double a,double b,double c,double d) { return fabs((b*c-a*d))/2.0; } int main() { while(~scanf("%d%lf",&n,&r)&&(n+r)) { cnt=0; double d; for(int i=1;i<=n;i++) { scanf("%lf",&d); addpoint(d); } double ans=0; for(int i=3;i<=cnt;i++) for(int j=2;j<i;j++) for(int k=1;k<j;k++) {//叉积计算三角形面积 double xij=aa[j].x-aa[i].x; double yij=aa[j].y-aa[i].y; double xik=aa[k].x-aa[i].x; double yik=aa[k].y-aa[i].y; ans+=mianji(xij,yij,xik,yik); } printf("%.0lf\n",ans); } return 0; }
转载于:https://www.cnblogs.com/Wangwanxiang/p/7421947.html