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;
}

 

posted @ 2011-09-21 19:13  DChipNau  阅读(104)  评论(0编辑  收藏  举报