zoukankan      html  css  js  c++  java
  • 犄角之势

    题目大意:给定三角形三个顶点的坐标,判断是否可形成三角形,如果可形成三角形,求三角形内切圆面积与外接圆面积。

    输入格式
    第一行一个整数 T,表示数据的组数。接下来 T 行,每行 6 个整数 x1,y1,x2,y2,x3,y3 表示三个点的坐标
    输出格式
    对于每组数据,如果不能组成三角形,输出"NO SOLUTION",否则输出两个空格分隔的实数,分别表示内切圆和外接圆的面积。相对误差或者绝对误差在 10^-6范围内就认为是正确的。

    样例输入:

    4
    0 3 4 0 0 0
    0 0 10 10 -10 -10
    3 3 5 3 3 5
    0 0 -5 -10 5 -10

    样例输出:

    3.1415926536 19.6349540849
    NO SOLUTION
    1.0780241689 6.2831853072
    29.9995403716 122.7184630309

    #include <cstdio>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <math.h>
    using namespace std;
    const int inf=0x7fffffff;
    const long long mod=1e9+7;
    const double PI=acos(-1);                      //PI的定义方式
    double juli(int x1,int y1,int x2,int y2){
        return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    }
    int main()
    {    
        int t;
        int x1,y1,x2,y2,x3,y3;
        cin>>t;
        while(t--){
            cin>>x1>>y1>>x2>>y2>>x3>>y3;
            if((x1-x3)*(y2-y3)==(x2-x3)*(y1-y3)){
                cout<<"NO SOLUTION"<<endl;
                continue;
            }
            double a=juli(x1,y1,x2,y2);
            double b=juli(x1,y1,x3,y3);
            double c=juli(x2,y2,x3,y3);
            double p=(a+b+c)/2;
            double s=sqrt(p*(p-a)*(p-b)*(p-c));        //海伦公式求面积 
            double r1=2*s/(a+b+c);                       //三角形内切圆半径 
            double r2=0.25*a*b*c/s;                    //三角形外接圆半径 
            printf("%.10lf %.10lf
    ",r1*r1*PI,r2*r2*PI);
        }
        return 0;
    }
  • 相关阅读:
    设计模式
    Java Volatile 关键字详解
    设计模式
    设计模式
    java 希尔排序
    java 插入排序
    java 选择排序
    java 枚举
    codeforces 915D Almost Acyclic Graph 拓扑排序
    TYVJ 1728 普通平衡树
  • 原文地址:https://www.cnblogs.com/xusi/p/12411934.html
Copyright © 2011-2022 走看看