小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;
}
}
}
}
}
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;
}
}
}
}
}