joj 1184
用得非常笨的方法:
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
#define pi 3.141592653589793
int main()
{
double a1,a2,a3,b1,b2,b3,x,y;
while(scanf("%lf%lf%lf%lf%lf%lf",&a1,&b1,&a2,&b2,&a3,&b3)!=EOF)
{
double p1=2*a2-2*a1;
double p2=b2*b2-b1*b1+a2*a2-a1*a1;
double p3=2*b1-2*b2;
double q1=2*a3-2*a1;
double q2=b3*b3-b1*b1+a3*a3-a1*a1;
double q3=2*b1-2*b3;
// cout<<p1<<" "<<p2<<" "<<p3<<" "<<q1<<" "<<q2<<" "<<q3<<endl;
double m=(q1*p3-p1*q3);
double n=p1;
if(m!=0&&n!=0)
{
y=(q2*p1-p2*q1)/(q1*p3-p1*q3);
x=(p2+p3*y)/p1;
}
else if(m!=0&&n==0)
{
y=(q2*p1-p2*q1)/(q1*p3-p1*q3);
x=(q2+q3*y)/q1;
}
double l=sqrt((x-a1)*(x-a1)+(y-b1)*(y-b1));
//cout<<l<<endl;
double c=2*pi*l;
printf("%.2lf\n",c);
}
}
找的大牛的代码 利用同弧圆周角相等 再加上一边直径则圆周角为90度求出来的 自己果然差的好远啊
#include<iostream>
#include<cmath>
#define pi 3.141592653589793
using namespace std;
int main()
{
double x1,y1,x2,y2,x3,y3,a,b,c;
while(cin>>x1>>y1>>x2>>y2>>x3>>y3)
{
a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
b=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
c=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
printf("%.2f\n",2*pi*a*b*c/(sqrt((a+b+c)*(a+b-c)*(b+c-a)*(a+c-b))));
}
return 0;
}