萌新真的刚学OI,求调代码(蜜汁错误)
查看原帖
萌新真的刚学OI,求调代码(蜜汁错误)
315398
小杨小小杨楼主2024/7/21 20:25

RT

#include<bits/stdc++.h>
using namespace std;
const double pi=3.14159;
double R,p,S,a,b,c,Angle;
int Retemp;
struct Node{
	double x,y,csinc,coss,sin2,cos2,angle;
	int plont;
}A,B,C;
double sqr(double x){return x*x;}
double sqrtm(Node x,Node y){return sqrt(sqr(x.x-y.x)+sqr(x.y-y.y));} 
int gcd(int x,int y){return (y==0?x:gcd(y,x%y));}
int main(){
	scanf("%lf%lf%lf%lf%lf%lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y);
	a=sqrtm(B,C);b=sqrtm(A,C);c=sqrtm(A,B);
	p=(a+b+c)/2;
	S=sqrt(p*(p-a)*(p-b)*(p-c));
	A.csinc=S*2/b/c; B.csinc=S*2/a/c; C.csinc=S*2/a/b;
	A.coss=sqrt(1.0-sqr(A.csinc)); B.coss=sqrt(1.0-sqr(B.csinc)); C.coss=sqrt(1.0-sqr(C.csinc));
	A.sin2=2.0*A.csinc*A.coss; B.sin2=2.0*B.csinc*B.coss; C.sin2=2.0*C.csinc*C.coss;
	R=a/A.csinc/2.0;
	A.angle=asin(A.sin2); A.plont=(int)(360.0/(A.angle*180.0/pi));
	B.angle=asin(A.sin2); B.plont=(int)(360.0/(B.angle*180.0/pi));
	C.angle=asin(A.sin2); C.plont=(int)(360.0/(C.angle*180.0/pi));
	Retemp=gcd(gcd(A.plont,B.plont),C.plont);
	Angle=360.0/Retemp;
	printf("%lf",1.0*sqr(R)*sin(Angle/180*pi)/2*Retemp);
	return 0;
}

2024/7/21 20:25
加载中...