Arpa is taking a geometry exam. Here is the last problem of the exam.
You are given three points a, b, c.
Find a point and an angle such that if we rotate the page around the point by the angle, the new position ofa is the same as the old position of b, and the new position of b is the same as the old position ofc.
Arpa is doubting if the problem has a solution or not (i.e. if there exists a point and an angle satisfying the condition). Help Arpa determine if the question has a solution or not.
The only line contains six integers ax, ay, bx, by, cx, cy (|ax|, |ay|, |bx|, |by|, |cx|, |cy| ≤ 109). It's guaranteed that the points are distinct.
Print "Yes" if the problem has a solution, "No" otherwise.
You can print each letter in any case (upper or lower).
0 1 1 1 1 0
Yes
1 1 0 0 1000 1000
No
In the first sample test, rotate the page around (0.5, 0.5) by.
In the second sample test, you can't find any solution.
题目大意:给你三个点,问你能否通过给他们都旋转一个角度使他们重合
如果每两个点之间的距离不相等肯定是不行的。
如果三个点都在一条直线上也是不行的(怎么旋转都转不到一起)
很奇怪的是我对每个点坐标都是用int定义的,然后出现分母为0的情况就RE了....可是用double就不会....
#include<bits/stdc++.h>
using namespace std;
int main(){
double ax,ay,bx,by,cx,cy;
while(cin>>ax>>ay>>bx>>by>>cx>>cy){
double dis1=(by-ay)*(by-ay)+(bx-ax)*(bx-ax);
double dis2=(cy-by)*(cy-by)+(cx-bx)*(cx-bx);
if(dis1!=dis2) cout<<"No"<<endl;
else{
double k1=(by-ay)/(bx-ax);
double k2=(cy-by)/(cx-bx);
if(k1==k2) cout<<"No"<<endl;
else cout<<"Yes"<<endl;
}
}
}