zoukankan      html  css  js  c++  java
  • 小X与正方形

    题目:

    时间限制 : 1 Sec
    内存限制 : 128 Mb
    提交 : 109
    解决 : 44

    题目描述

    小X的老师很喜欢围棋。众所周知,围棋的棋盘有19行19列。为方便起见,我们把这些行列按顺序编号为1~19,并用(x, y)表示第x列第y行的位置。例如下图中,A用(16,4)表示,B用(14, 3)表示。

    现在老师让小X在棋盘上放4枚棋子,要求这4枚棋子组成一个正方形的四个顶点。但是小X喜欢三角形,不喜欢正方形,于是只放了3枚就跑出去玩去了。那么这最后的棋子就交给你来放了,请求出这枚棋子应该放在哪里?

    输入

    输入数据仅有一行包含6个用空格隔开的正整数x1, y1, x2, y2, x3, y3, 表示三枚棋子的位置为(x1, y1), (x2, y2), (x3, y3)

    输出

    输出一行包含两个正整数x和 y,两数之间用一个空格隔开;表示若将最后一枚棋子放在位置(x, y),它与之前的三枚棋子能组成一个正方形的四个顶点。数据保证方案唯一。

     

    样例输入

    样例1: 
    4 4 4 16 16 16
    样例2: 
    2 1 4 2 3 4

    样例输出

    样例1: 
    16 4
    样例2: 
    1 3
     
    思路:
    1、搜索(怎么搜我不管)。
    2、应用勾股定理判断此数是否符合。
     
    标程:
    #include<bits/stdc++.h>
    using namespace std;
    int t,a[10],b[10],pd[10];
    int goug(int r,int sp)
    {
     int cc;
     cc=sqrt(r*r+sp*sp);
     return cc;
    }
    int main()
    {
     cin>>a[1]>>b[1]>>a[2]>>b[2]>>a[3]>>b[3];
        pd[1]=goug(abs(a[1]-a[2]),abs(b[1]-b[2]));
        pd[2]=goug(abs(a[1]-a[3]),abs(b[1]-b[3]));
        pd[3]=goug(abs(a[3]-a[2]),abs(b[3]-b[2]));
        if (pd[1]==pd[3])
        {
         t=pd[3];
         pd[3]=pd[2];
         pd[2]=t;
         t=a[3];
         a[3]=a[2];
         a[2]=t;
            t=b[3];
         b[3]=b[2];
         b[2]=t;
        }
        if (pd[2]==pd[3])
        {
         t=pd[3];
         pd[3]=pd[1];
         pd[1]=t;
         t=a[3];
         a[3]=a[1];
         a[1]=t;
            t=b[3];
         b[3]=b[1];
         b[1]=t;
        }
        for (int i=1;i<=19;i++)
        {
         for (int j=1;j<=19;j++)
         {
          if ((i!=a[3])||(j!=b[3]))
          {
           pd[4]=goug(abs(a[1]-i),abs(b[1]-j));
           pd[5]=goug(abs(a[2]-i),abs(b[2]-j));
           pd[6]=goug(abs(a[3]-i),abs(b[3]-j));
           if (pd[4]==pd[6])
           {
            t=pd[6];
            pd[6]=pd[5];
            pd[5]=t;
         }
                if (pd[5]==pd[6])
                {
                   t=pd[6];
                   pd[6]=pd[4];
                   pd[4]=t;
                }
          }
          for (int k=1;k<=3;k++)
          {
           if (pd[k]!=pd[k+3])break;
           if (k==3)
           {
            cout<<i<<" "<<j<<endl;
            return 0;
           }
          }
         }
        }
       
    }
  • 相关阅读:
    Vue中事件委托的使用
    java提取每个汉字的首字母
    想把大脑存进电脑,我为什么要写博客
    CF 1606 D题题解
    js前端 音频波形图像展示
    js前端 仪表盘实现
    js前端 bootstrap select的使用
    UOS系统维护命令
    linux 打印机管理常用命令
    linux 调用shell命令
  • 原文地址:https://www.cnblogs.com/leonqqs/p/7068480.html
Copyright © 2011-2022 走看看