Clarke is a patient with multiple personality disorder. One day, Clarke turned into a learner of geometric. 
When he did a research with polygons, he found he has to judge if the polygon is a five-pointed star at many times. There are 5 points on a plane, he wants to know if a five-pointed star existed with 5 points given.

InputThe first line contains an integer Yes. )Sample Input

2
3.0000000 0.0000000
0.9270509 2.8531695
0.9270509 -2.8531695
-2.4270509 1.7633557
-2.4270509 -1.7633557
3.0000000 1.0000000
0.9270509 2.8531695
0.9270509 -2.8531695
-2.4270509 1.7633557
-2.4270509 -1.7633557

Sample Output

Yes
No


        
 

HintClarke and five-pointed starClarke and five-pointed star

我想了下,感觉这道题做法很多啊,判边判点的,但是一想还是觉得判边比较轻松,只要考率里面五条边相等,外面五条边相等就好了

#include<bits/stdc++.h>
using namespace std;
int main() {
    int T,i,j;
    double x[5],y[5],a[15];
    scanf("%d",&T);
    while(T--) {
        for(i=0; i<5; i++)
            scanf("%lf%lf",&x[i],&y[i]);
        int t=0,f=1;
        for(i=0; i<5; i++)
        for(j=0; j<i; j++)
        a[t++]=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
        sort(a,a+t);
        for(i=0; i<9; i++)
            if(i!=4&&fabs(a[i]-a[i+1])>0.0001) f=0;
        printf("%s\n",f?"Yes":"No");
    }
    return 0;
}

 

相关文章:

猜你喜欢
相关资源
相似解决方案