关于评测机
查看原帖
关于评测机
285617
黑影洞人楼主2022/8/4 19:56
#include<cstdio>
#include<algorithm>
#include<cmath>
#define N 4
using namespace std;
const double eps=1e-6,pi=3.141592653;
double x[N],y[N],xit[N],l[N],a,b,c,sit;
double dist(double i,double j,double t,double k){return sqrt((i-t)*(i-t)+(j-k)*(j-k));}
double dgcd(double a,double b){
	if(fabs(a)<eps)return b;
	if(fabs(b)<eps)return a;
	return dgcd(fmod(a,b),a);
}
signed main(){
	for(int i=1;i<=3;i++)scanf("%lf%lf",&x[i],&y[i]);
	for(int i=1;i<=3;i++)l[i]=dist(x[i],y[i],x[(i+1)%4==0?1:(i+1)%4],y[(i+1)%4==0?1:(i+1)%4]);
	a=l[1],b=l[2],c=l[3];
	double p=(a+b+c)/2;
	double r=(a*b*c)/(4*sqrt(p*(p-a)*(p-b)*(p-c)));
	for(int i=1;i<3;i++)xit[i]=acos(1-((l[i]*l[i])/(2*r*r)));
	xit[3]=pi*2-xit[1]-xit[2];
	sit=dgcd(xit[1],dgcd(xit[2],xit[3]));
	printf("%.6lf",pi*r*r*sin(sit)/(sit));
	return 0;
}

这个代码样例输出1.0000000但是评测机显示是0.000000

2022/8/4 19:56
加载中...