计蒜客 犄角之势 --- 数学

题目链接 https://nanti.jisuanke.com/t/A2226

 

 题解: 给定3个点坐标,求内接圆和外接圆半径。

以第三个点为原点,另2个点计算新坐标。  然后利用向量的叉积求出三角形面积s,然后利用正弦定理可以求出外接圆半径,再利用 1/2 * r(a+b+c)= s,求出内接圆半径。 

具体题解链接https://www.jisuanke.com/course/1980/162840  (63分钟处)

#include <cstdio>
  #include <cmath>
   using namespace std;
   double PI = acos(-1);
   int x1,y11,x2,y2,x3,y3;
   int t;
   int main()
{
    scanf("%d",&t);
    while(t--) {
        scanf("%d%d%d%d%d%d",&x1,&y11,&x2,&y2,&x3,&y3);
        x1 -= x3;
        x2 -= x3;
        y11 -= y3;
        y2 -= y3;
        if(x1*y2==x2*y11) {
            printf("NO SOLUTION\n");
            continue;
        }
        double s = fabs(x1 * y2-x2 * y11);
        double a = sqrt(x1 * x1+y11 * y11);
        double b = sqrt(x2 * x2+y2 * y2);
        double c = sqrt((x1-x2)*(x1-x2)+(y11-y2)*(y11-y2));
        double r1 = a*b*c / s / 2;
        double r2 = s / (a+b+c);
        printf("%.10lf %.10lf\n",PI*r2*r2,PI*r1*r1);
    }
    return 0;
   }

猜你喜欢

转载自blog.csdn.net/lmhlmh_/article/details/87453682