列表

详情


NC21842. 正方形检测

描述

给你平面直角坐标系中的四个点,判断这四个点是否构成一个正方形   

输入描述

第一行输入四个整数x_i ()
第二行输入四个整数y_i ()

输出描述

如果可以构成正方形,输出"It's a square"
否则输出"Not a square"

示例1

输入:

0 0 2 2
0 2 0 2

输出:

It's a square

示例2

输入:

0 1 5 6
1 6 0 5

输出:

It's a square

示例3

输入:

0 0 7 7
0 3 0 3

输出:

Not a square

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 2ms, 内存消耗: 436K, 提交时间: 2023-03-15 20:38:09

#include<stdio.h>
int main(){
	int i,j,k,t=0,x[4],y[4],s[7];
	for(i=0;i<4;i++) scanf("%d",&x[i]);
	for(i=0;i<4;i++) scanf("%d",&y[i]);
	for(i=0,j=0;j<3;j++){
		for(k=j+1;k<4;k++) s[i++]=(y[j]-y[k])*(y[j]-y[k])+(x[j]-x[k])*(x[j]-x[k]);
	}
	for(j=0;j<i;j++)
      for(k=0;k<i;k++){
        if(s[j]==s[k]) t++; 
      }
	if(t==20) printf("It's a square");
	else printf("Not a square");
}

pypy3(pypy3.6.1) 解法, 执行用时: 48ms, 内存消耗: 20360K, 提交时间: 2020-09-11 10:51:32

x = list(map(int, input().split()))
y = list(map(int, input().split()))
ans = []
for i in range(4):
    for j in range(i+1, 4):
        ans.append((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]))

ans.sort()
if ans[0] == ans[1] and ans[1] == ans[2] and ans[2] == ans[3] and ans[4] == ans[5]:
    print("It's a square")
else:
    print("Not a square")

Python3 解法, 执行用时: 64ms, 内存消耗: 7116K, 提交时间: 2021-11-13 10:18:27

x=[ int(i) for i in input().split(' ')]
y=[ int(i) for i in input().split(' ')]
x0=sum(x)/4
y0=sum(y)/4
tep=(x[0]-x0)**2+(y[0]-y0)**2
a=(x[0]-x[1])**2+(y[0]-y[1])**2
b=(x[2]-x[1])**2+(y[2]-y[1])**2
if  min(a,b)==2*tep:
    print("It's a square")
else:
    print("Not a square")

上一题