思路:
在计算边长时,用两点之间距离公式得出结果不用开根,即边长的平方,再判断最小的两个边长的平方是否等于第三边的平方,如相等,则是直角三角形,否则不是。
在求周长时,只需取根再求和。
优点:
省略了判断浮点数是否相等的步骤
#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; } }