Codeforces 851B && Round #432 Div. 2 B. Arpa and an exam about geometry

本文探讨了一个几何问题:给定三个点,判断是否可以通过旋转使它们彼此重合。文章分析了实现这一目标的条件,包括点间距离相等且不共线的要求,并提供了一个具体的编程解决方案。

B. Arpa and an exam about geometry
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

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.

Input

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.

Output

Print "Yes" if the problem has a solution, "No" otherwise.

You can print each letter in any case (upper or lower).

Examples
Input
0 1 1 1 1 0
Output
Yes
Input
1 1 0 0 1000 1000
Output
No
Note

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;
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值