您的位置:首页 > 其它

正方形

2015-08-15 21:25 363 查看

正方形


Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^

题目描述

给出四个点,判断这四个点能否构成一个正方形。

输入

输入的第一行包含一个整数T(T≤30)表示数据组数,每组数据只有一行,包括8个整数x1, y1, x2, y2,x3,y3,x4,y4(数据均在-1000,1000 之间)以逆时针顺序给出四个点的坐标。

输出

每组数据输出一行,如果是正方形,则输出: YES, 否则,输出:NO。

示例输入

20 0 1 0 1 1 0 1-1 0 0 -2 1 0 2 0


示例输出

YESNO


提示

来源

示例程序

view plaincopyprint如果您复制代码时出现行号,请点击左边的“view
plain”后再复制

#include<stdio.h>

#include<math.h>

int main()

{

int T;

int x1, x2, x3, x4, y1, y2, y3, y4;

scanf("%d", &T);

while(T--)

{

double a, b, c, d;

scanf("%d%d%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4);

a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

b=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));

c=sqrt((x4-x3)*(x4-x3)+(y4-y3)*(y4-y3));

d=sqrt((x1-x4)*(x1-x4)+(y1-y4)*(y1-y4));

if(a==b &&b==c && c==d)

{

double e=(x2-x4)*(x2-x4)+(y2-y4)*(y2-y4);

//if(a*a+d*d==e*e)

if((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(x1-x4)*(x1-x4)+(y1-y4)*(y1-y4)==e)

printf("YES\n");

else

printf("NO\n");

}

else

printf("NO\n");

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: