输入描述:
输入第一行为样例数m,接下来m行每行6个整数分别表示三个点的横纵坐标。
输出描述:
对于每个样例输出两行,第一行根据是否直角三角形输出Yes或No,第二行输出三角形的周长,保留小数点后两位。
示例1
输入
复制
1 0 0 3 0 0 4
输出
复制
Yes 12.00
#include <stdio.h>
#include <math.h>
void triangle(float s1,float s2,float s3)
{
int max=0;
if(s1>s2){
max=1;
if(s3>s1)
max=3;
}
else {
max=2;
if(s3>s2)
max=2;
}
switch(max)
{
case 1:if(pow(s1,2)==pow(s2,2)+pow(s3,2)) printf("Yes\n");else printf("No\n");break;
case 2:if(pow(s2,2)==pow(s1,2)+pow(s3,2)) printf("Yes\n");else printf("No\n");break;
case 3:if(pow(s3,2)==pow(s1,2)+pow(s2,2)) printf("Yes\n");else printf("No\n");break;
default : printf("wrong!\n");break;
}
return;
}
int main()
{
int casenum;
float x0,y0,x1,y1,x2,y2;
float a,b,c;
scanf("%d",&casenum);
for(int i=0;i<casenum;i++)
{
scanf("%f%f%f%f%f%f",&x0,&y0,&x1,&y1,&x2,&y2);
a=sqrt(pow(x0-x1,2)+pow(y0-y1,2));
b=sqrt(pow(x1-x2,2)+pow(y1-y2,2));
c=sqrt(pow(x0-x2,2)+pow(y0-y2,2));
triangle(a,b,c);
printf("%.2f\n",a+b+c);
}
return 0;
}