Description
今天,pasher打算在一个浪漫的花园和他的搭档们聚餐,但是不幸的是,pasher忘记了花园的地点,他只记得这个花园看上去像个平行于坐标轴的正方形,他还记得花园的每个顶点上都有一棵大数。现在,pasher知道其中两棵树的坐标,且这两棵树在对角线上,你能帮他找出另外两棵树的坐标吗?
Input
多组输入,直到文件末。每组输入包含一行,第一行包含四个整数,x1,y1,x2,y2,代表pasher知道的两棵树的坐标,(-100<=x1,y1,x2,y2<=100),其中x1,y1代表第一棵树,x2,y2代表第二棵树。
Output
如果没有解则输出-1。否则输出另外两棵树的坐标x3,y3,x4,y4,按x递增的顺序输出.
Sample Input
0 0 1 1
Sample Output
0 1 1 0
HINT
代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int x1,y1,x2,y2;
int x3,y3,x4,y4;
while (cin>>x1>>y1>>x2>>y2)
{
if (fabs(x1-x2)==fabs(y1-y2)&&(x1!=x2)&&(y1!=y2))
{
if (x1<x2)
{
x3=x1;
x4=x2;
y3=y2;
y4=y1;
}
else
{
x3=x2;
x4=x1;
y3=y1;
y4=y2;
}
cout<<x3<<" "<<y3<<" "<<x4<<" "<<y4<<endl;
}
else
cout<<"-1"<<endl;
}
return 0;
}
运行结果:
学习心得:
题目的确很简单。我却想复杂了,担心如果对角线的横或者纵坐标一致的时候(即正方形在空间直角坐标系呈菱形的时候)怎么办,好在找到了求另外两点的方法,这里就不分享了。。。今天抱着试一下的态度先来个简单的,就当它的边平行于坐标轴(题目上有提到,但是我不确定)来先测试一下,结果果然是这样,,,我这总是把问题想复杂的脑袋里面得好好整理整理了,平时涉猎的太多,但是又不精通,,,以至于经常产生这种情况。。。