原题链接
题意
给一个B点坐标,A点坐标是(0,0),求一个C点坐标,使A点到C点的距离和B点到C点的距离相等,同时使A点到B点距离的一半。
思路
如果A点和B 点之间的距离是奇数那么肯定是-1;
如果是偶数,那么一定有解。
- 那么C点到A、B点的距离就是A、B点的距离除以2
- 分析这个距离位于哪条轴上
因为是除以2得到的距离,肯定有一条轴放不下,那就看看那条轴比它大,另外一条就肯定是放不下的,那么就把另外一条放满,剩下的距离放到比它大的轴上。 - 肯定有一条轴的长度大于等于这个距离,那么就把C点放在这条轴上,然后再用过
放得下的坐标 - 距离
得到另一个坐标。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;cin >> t;while (t -- ) {
int x, y;cin >> x >> y;if ((x + y) % 2 != 0){
cout << "-1 -1" << endl;}else{
int flag = (x + y) / 2;if (y >= flag){
cout << x << " " << y - flag << endl;}else{
cout << x - flag << " " << y << endl;;}}}return 0;
}