题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1791
AC代码:
#include <stdio.h>
#include <math.h>
#define eps 1e-8
struct node
{
double x,y;
}p[3];
bool get_circle(node p1,node p2,node p3,node &w){
double x12,x13,y12,y13,z2,z3,d;
x12=p2.x-p1.x;
y12=p2.y-p1.y;
x13=p3.x-p1.x;
y13=p3.y-p1.y;
z2=x12*(p1.x+p2.x)+y12*(p1.y+p2.y);
z3=x13*(p1.x+p3.x)+y13*(p1.y+p3.y);
d=2.0*(x12*(p3.y-p2.y)-y12*(p3.x-p2.x));
if(fabs(d)<eps)
return false;
w.x=(y13*z2-y12*z3)/d;
w.y=(x12*z3-x13*z2)/d;
return true;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%lf%lf%lf%lf%lf%lf",&p[0].x,&p[0].y,&p[1].x,&p[1].y,&p[2].x,&p[2].y);
node w;
if(get_circle(p[0],p[1],p[2],w))
printf("%.1lf %.1lf\n",w.x,w.y);
else if((p[0].x==p[1].x&&p[0].y==p[1].y)||
(p[0].x==p[2].x&&p[0].y==p[2].y)||
(p[1].x==p[2].x&&p[1].y==p[2].y))
printf("%.1lf %.1lf\n",(p[0].x+p[1].x+p[2].x)/2,(p[0].y+p[1].y+p[2].y)/2);
else
printf("No this position\n");
}
return 0;
}