思路:

在计算边长时,用两点之间距离公式得出结果不用开根,即边长的平方,再判断最小的两个边长的平方是否等于第三边的平方,如相等,则是直角三角形,否则不是。

在求周长时,只需取根再求和。

优点:

省略了判断浮点数是否相等的步骤

#include "iostream"
#include "math.h"
#include "algorithm"
#include "iomanip"
using namespace std;

int main(){
    int m;
    int a[3];
    cin >> m;
    for(int i=0;i<m;++i){
        int x1,y1,x2,y2,x3,y3;
        cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
        a[0] = (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
        a[1] = (x1-x3)*(x1-x3)+(y1-y3)*(y1-y3);
        a[2] = (x2-x3)*(x2-x3)+(y2-y3)*(y2-y3);
        sort(a, a+3); // 排序
        if(a[0]+a[1] == a[2]){
            cout << "Yes" << endl;
        }
        else{
            cout <<"No" << endl;
        }
        cout << fixed << setprecision(2) << sqrt(a[0])+sqrt(a[1])+sqrt(a[2]) << endl;
    }

}