CodeForces 1C - Ancient Berland Circus
1526 ワード
これは数学的すぎるでしょう.
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <iomanip>
#include <algorithm>
#include <cctype>
#include <stack>
#include <queue>
#include <string>
#include <cstring>
#include <iomanip>
#include <set>
#include <vector>
#include <cstdio>
#include <stack>
#include <sstream>
#include <cstring>
using namespace std;
const int MAX=1000005;
const double Pi=acos(-1.0);
struct node
{
double x,y;
};
double dis(node a,node b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));//
}
double a1cos(double a,double b,double c)
{
return acos((a*a+b*b-c*c)/(2*a*b));//
}
double S(double a,double b,double c)
{
double tmp=(a+b+c)/2;
return sqrt(tmp*(tmp-a)*(tmp-b)*(tmp-c));//
}
double gcd(double a,double b)
{
return b>1e-4?gcd(b,a-floor(a/b)*b):a;//
}
int main()
{
node a,b,c;
cin>>a.x>>a.y>>b.x>>b.y>>c.x>>c.y;
double d1=dis(a,b);
double d2=dis(b,c);
double d3=dis(a,c);
double s1=S(d1,d2,d3);
double sr=d1*d2*d3/(4*s1);//
//cout<<sr<<endl;
double ac=a1cos(d2,d3,d1);
double bc=a1cos(d1,d3,d2);
double cc=a1cos(d1,d2,d3);
double tmp1=gcd(ac,gcd(bc,cc));
double num=Pi/tmp1;
//cout<<num<<endl;
printf("%.8lf
",sr*sr/2*sin(2*Pi/num)*num);
return 0;
}