1564:等腰三角形
时间限制: 1 S | 内存限制: 8192 KB
Accept: 96 | Submit: 283
[提交] [状态] [我的提交] [讨论版]
描述
已知平面直角坐标系上三个互不相同的点的坐标,问这三个点是否能构成等腰三角形?(等边三角形也算一种等腰三角形)
输入
多组案例。一个正整数n,表示案例的数量。(n<=20)
每组案例由六个整数组成,代表第一个点的横坐标和纵坐标、第二个点的横坐标和纵坐标、第三个点的横坐标和纵坐标。(绝对值均不大于1000)
输出
针对每组案例,如果三个点能构成等腰三角形,那么输出Yes,否则输出No。
每组案例输出完都要换行。
样例输入
3
1 0 3 0 2 -2
1 0 2 0 3 0
1 0 0 0 0 2
样例输出
Yes
No
No
HINT
来源
20-21(2)第4次线上赛
#include <iostream>
using namespace std;
int main()
{
int n;
double a[6];
int b[3];
cin >> n;
while (n--)
{
for (int i = 0; i < 6; i++)
{
cin >> a[i];
}
double m = (a[0] - a[4]) / (a[1] - a[5]);
double m1 = (a[0] - a[2]) / (a[1] - a[3]);
double m2 = (a[4] - a[2]) / (a[5] - a[3]);
if (m==m1||m==m2||m1==m2)
{
cout << "No" << endl;
}
else
{
b[0] = (a[0] - a[2]) * (a[0] - a[2]) + (a[1] - a[3]) * (a[1] - a[3]);
b[1] = (a[0] - a[4]) * (a[0] - a[4]) + (a[1] - a[5]) * (a[1] - a[5]);
b[2] = (a[2] - a[4]) * (a[2] - a[4]) + (a[5] - a[3]) * (a[5] - a[3]);
if (b[0] == b[1] || b[0] == b[2] || b[1] == b[2])
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
}
return 0;
}