首页 > 试题广场 >

魔法阵

[编程题]魔法阵
  • 热度指数:3874 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

小Q搜寻了整个魔法世界找到了四块魔法石所在地,当4块魔法石正好能构成一个正方形的时候将启动魔法阵,小Q就可以借此实现一个愿望。

现在给出四块魔法石所在的坐标,小Q想知道他是否能启动魔法阵


输入描述:
输入的第一行包括一个整数(1≤T≤5)表示一共有T组数据

每组数据的第一行包括四个整数x[i](0≤x[i]≤10000),即每块魔法石所在的横坐标

每组数据的第二行包括四个整数y[i](0≤y[i]≤10000),即每块魔法石所在的纵坐标


输出描述:
对于每组数据,如果能启动魔法阵输出“Yes”否则输出“No”。
示例1

输入

3
0022
0202
0156
1605
0077
0303

输出

Yes
Yes
No
#计算两点距离
def dis(a,b):
    x=a[0]-b[0]
    y=a[1]-b[1]
    d=(x**2+y**2)**(1/2)
    return d

t=int(input())
for _ in range(t):
    x=list(input())
    y=list(input())
    li=[]
    #用li存放四个坐标[[,],[,],[,],[,]]
    for i in range(4):
        li.append([int(x[i]),int(y[i])])
    ds=[]
    #用ds存放六个距离[,,,,,]
    for i in range(3):
        for j in range(4):
            if i<j:
                ds.append(dis(li[i], li[j]))
    #距离排序,前四个距离应该相等,后两个距离也应该相等且等于前四个的根号2倍
    ds=sorted(ds)
    if  ds[4]==ds[5] and ds[4]/ds[3]==2**(1/2) and ds[3]==ds[2] and ds[2]==ds[1] and ds[1]==ds[0]:
        print("YES")
    else:
        print("No")
发表于 2022-03-04 11:11:32 回复(0)

问题信息

上传者:小小
难度:
1条回答 5252浏览

热门推荐

通过挑战的用户

查看代码