题意:在一个圆上有 n (n<=500)个点。不难证明,其中任意3个点都不共线,因此都可以组成一个三角形。求这些三角形的面积之和。
提示:枚举每一条边。
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<cmath>
#define pi (2.0*asin(1.0))
using namespace std;
int main()
{
int i,j,n;
double s,r,rad[505];
while(cin>>n>>r && n+r)
{
s=0;
for(i=0;i<n;i++)
{
cin>>rad[i];
rad[i]*=pi/180;
}
sort(rad,rad+n);
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
s+=(n+2*i-2*j)*sin(rad[j]-rad[i]);
}
}
s*=r*r/2;
cout<<fixed<<setprecision(0)<<s<<endl;
}
return 0;
}
本文介绍了一种算法,用于计算在给定半径和点数的圆上形成的三角形面积之和。算法通过枚举每条边并使用三角函数计算面积。

1366

被折叠的 条评论
为什么被折叠?



