题目:
时间限制 : 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; } } } } }