对于任何一个三角形ABC,令f(A,B,C)表示其三条边的三个中点构成的点集。现在给定(A,B,C)且满足所有坐标均为整数且构造三角形ABC三个顶点坐标。
输入格式
输入共有三行,每行两个整数,表示三角形一条边的中点坐标。 保证所有输入数据都在[−1018,1018]
中。
输出格式
输出三行,每行输出一个顶点的坐标,如果点坐标不是整数,则以两个有理数(既约分数),b/a的形式输出。
如果三角形的三个点存在多组不同的解,只需输出任意一组即可,但所输出的三个顶点坐标必须升序,即横坐标较小的点优先输出,横坐标相等,纵坐标较小的点优先输出。
输入样例:
1 1
2 2
3 1
输出样例:
0 2
2 0
4 2
1、三角形向量中线定理
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
struct Node {
ll x,y;
Node operator +(Node b) {
Node t;
t.x = x + b.x;
t.y = y + b.y;
return t;
}
Node operator -(Node b) {
Node t;
t.x = x - b.x;
t.y = y - b.y;
return t;
}
bool operator <(Node b) {
if(x != b.x) return x<b.x;
return y<b.y;
}
} node[3],ans[3];
int main()
{
for(int i=0; i<3; i++)
cin>>node[i].x>>node[i].y;
for(int i=0; i<3; i++)
ans[i] = node[(i+1)%3]+node[(i+2)%3]-node[(i+3)%3];
sort(ans,ans+3);
for(auto &a:ans) {
cout<<a.x<<" "<<a.y<<endl;
}
return 0;
}