首页 > 其他 > 详细

Arpa and an exam about geometry(codeforces 851B)

时间:2019-10-13 15:27:31      阅读:116      评论:0      收藏:0      [点我收藏+]

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 of a is the same as the old position of b, and the new position of b is the same as the old position of c.

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
Copy
0 1 1 1 1 0
Output
Copy
Yes
Input
Copy
1 1 0 0 1000 1000
Output
Copy
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.

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
struct Point{
    int x,y;
    Point(){}
    Point(int a,int b):x(a),y(b){}
    inline void input(){
        scanf("%d%d", &x, &y);
    }
    Point operator-(const Point &a)const{
        return Point(x - a.x, y - a.y);
    }
    bool operator==(const Point &a)const{
        if((x - a.x)==0 && (y - a.y)==0) return 1;
        else return 0;
    }
    Point operator/(const double &a){
        return Point(x/a, y/a);
    }
    bool pdk(const Point &a){
        return (1ll*x * a.y - 1ll*y * a.x)==0;
    }
    void output(){
        printf("x = %d  y = %d\n", x, y);
    }
    long long dis(){
        return 1ll*x*x + 1ll*y*y;
    }
};
struct Line{
    Point s,e;
    Line(){}
    Line(const Point &a, const Point &b):s(a),e(b){}
    Line(const Line &a){
        s = a.s, e = a.e;
    }
};
int main(){
    Point a,b,c;
    a.input();
    b.input();
    c.input();
    if( (b-a).pdk(c-b) || (b-a).dis()!= (c-b).dis()) puts("No");
    else puts("Yes");
    return 0;
}

 

Arpa and an exam about geometry(codeforces 851B)

原文:https://www.cnblogs.com/LS-Joze/p/11666387.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!