天天看點

uva 11186 - Circum Triangle

題意:在一個圓上有 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;
}