我试图解决一个问题,但我似乎无法理解它应该如何解决,就像我知道得到一个正方形的坐标你需要2个角来得到另外2个但这只是失败,这是问题所在:
帕什马克爱上了一个名叫帕米达的迷人女孩 一年前......今天,Pashmak在一个浪漫的花园里与他的伴侣开会。 不幸的是,Pashmak已经忘记了花园的位置。但是他 记得花园看起来像一个两侧平行的正方形 坐标轴。他还记得,只有一棵树 在广场的每个顶点上。现在,Pashmak只知道这个位置 两棵树。帮助他找到剩下的两个人的位置。
输入第一行包含四个以空格分隔的x1,y1,x2,y2 ( - 100≤x1,y1,x2,y2≤100)整数,其中x1和y1是 第一棵树的坐标和x2和y2是坐标 第二棵树。它保证了给定的点是不同的。
输出如果没有问题的解决方案,请打印-1。除此以外 打印四个空格分隔的整数x3,y3,x4,y4对应 其他两棵树的坐标。如果有几种解决方案 你可以输出任何一个。
请注意,x3,y3,x4,y4必须在范围内 ( - 1000≤X3,Y3,X4,Y4≤1000)。
实例
输入
0 0 0 1
输出
1 0 1 1
输入
0 0 1 1
输出
0 1 1 0
输入
0 0 1 2
输出
-1
我也真的不明白为什么最后一个问题无法解决,尽管可能是
0 2 1 0
因为输出也是解决问题的代码:
#include <stdio.h>
#include <math.h>
int main(){
int x1,x2,x3,x4,y1,y2,y3,y4;
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
if (abs(x2-x1) == abs(y2 - y1)){
y4 = y2;
y3= y1;
x4=x1;
x3=x2;
printf("%d %d %d %d", x4 ,y4, x3, y3);
}else if (x1 == x2){
x4= abs(y2-y1)+x1;
x3=x4;
y4=y1;y3=y2;
printf("%d %d %d %d", x4 ,y4, x3, y3);
}else if( y2 == y1){
x3=x1;
x4=x2;
y4 = abs(x2-x1) + y2;
y3 = y4;
printf("%d %d %d %d", x4 ,y4, x3, y3);
}else {
printf("-1");
}
return 0;
}
如果有人能够解释使用这些数学或这些方法背后的概念,那么我们真的很感激! :)