Codeforces Round #432 B. Arpa and an exam about geometry

来源:互联网 发布:电脑安装ubuntu双系统 编辑:程序博客网 时间:2024/05/29 09:01
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.

这道题一看就是找外接圆,然后我就去搜公式了,然后就用上了,然后就错了一次,知道可能成直线,自己就算了一下斜率,结果就过了pretest.早上起来一看,好的,错了知道可能斜率不存在,又改了一发,还不对,之后就是不对不对了。看了别人的题解,明白了,这个精确度出现了问题,能用整数,不要用double,所以看着别人的题解,过了......

#include <cstdio>#include<cstring>#include<cmath>using namespace std;typedef long long ll;const double eps=1e-18;int main(){    ll ax,ay,bx,by,cx,cy;    scanf("%I64d %I64d %I64d %I64d %I64d %I64d",&ax,&ay,&bx,&by,&cx,&cy);    if(ax+cx==2*bx&&ay+cy==2*by){        printf("No\n");        return 0;    }    ll a_b=(ax-bx)*(ax-bx)+(ay-by)*(ay-by);    ll b_c=(bx-cx)*(bx-cx)+(by-cy)*(by-cy);    if(a_b==b_c)        printf("Yes\n");    else        printf("No\n");return 0;}

贴一下,那道求外接圆心的公式吧

    double  x1,x2,x3,y1,y2,y3;    double  x  =  0;    double  y  =  0;    x1  =  ax;    x2  =  bx;    x3  =  cx;    y1  =  ay;    y2  =  by;    y3  =  cy;    x=((y2-y1)*(y3*y3-y1*y1+x3*x3-x1*x1)-(y3-y1)*(y2*y2-y1*y1+x2*x2-x1*x1))/(2*(x3-x1)*(y2-y1)-2*((x2-x1)*(y3-y1)));    y=((x2-x1)*(x3*x3-x1*x1+y3*y3-y1*y1)-(x3-x1)*(x2*x2-x1*x1+y2*y2-y1*y1))/(2*(y3-y1)*(x2-x1)-2*((y2-y1)*(x3-x1)));


阅读全文
0 0
原创粉丝点击