首页 > 试题广场 >

魔法阵

[编程题]魔法阵
  • 热度指数: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
while(true){
    $n=0;
    fscanf(STDIN, "%d", $n);
    
    if(empty($n)){
        exit;
    }

    for($j=0; $j<$n; $j++){
        // 使用%s取值,不然0会***掉
        fscanf(STDIN, "%s", $x); // x轴
        fscanf(STDIN, "%s", $y); // y轴
       
        $xx = str_split($x);
        $yy = str_split($y);

        $arr = []; // 保存各点之间的距离
        for($i=0; $i<4; $i++){
            for($ii=0; $ii<4; $ii++){
                if($ii==$i){
                    continue;
                }
                $arr[] = abs(pow($xx[$i]-$xx[$ii], 2)+pow($yy[$i]-$yy[$ii], 2));
            }
        }
     
        // 4位 8位
        $return = [];
        foreach($arr as $key=>$val){
            $return[$val]++;
        }
        
        if(count($return) != 2){
            echo "No\n";
        }else{
            echo "Yes\n";
        }
    }
}

发表于 2022-05-28 19:37:25 回复(0)

问题信息

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

热门推荐

通过挑战的用户

查看代码