正规做网站的公司,大连网站建设大全,德阳中恒网站建设,邢台论坛贴吧Dancing Stars on Me HDU - 5533
题意#xff1a;
LYD又来了#xff0c;这次他碰到了一个小问题#xff0c;给定n个点#xff0c;点的坐标为均为整数#xff0c;问这些点能否组成正多边形#xff1f;
题解#xff1a;
如果是正多边形#xff0c;那中心的坐标就是所…Dancing Stars on Me HDU - 5533
题意
LYD又来了这次他碰到了一个小问题给定n个点点的坐标为均为整数问这些点能否组成正多边形
题解
如果是正多边形那中心的坐标就是所有坐标的平均值只需要判断中心到各点的距离是否一样长就行 还有一个做法是由于坐标值均为整数只有正方形的坐标都是整数所以就是判断是否为正方形
代码
#includebits/stdc.h
#define debug(a,b) printf(%s %d\n,a,b);
typedef long long ll;
using namespace std;inline int read(){int s0,w1;char chgetchar();while(ch0||ch9){if(ch-)w-1;chgetchar();}while(ch0ch9) ss*10ch-0,chgetchar();//s(s3)(s1)(ch^48);return s*w;
}
const int maxn400;
struct point{double x,y;
}a[maxn];
const double eps0.0000001;
bool iff(double x,double y){if(abs(x-y)eps)return 1;else return 0;
}
double distance(point x,point y){return sqrt((x.x-y.x)*(x.x-y.x)(x.y-y.y)*(x.y-y.y));
}
int main()
{int t;tread();while(t--){int n;nread();point mid;mid.x0;mid.y0;memset(a,0,sizeof(a));for(int i1;in;i){a[i].xread();a[i].yread();mid.xa[i].x;mid.ya[i].y;}mid.x/n;mid.y/n;double last-1;bool f0;for(int i1;in;i){if(last-1){lastdistance(mid,a[i]);continue;}double disdistance(mid,a[i]);if(iff(dis,last)0){f1;break;}}if(f1)puts(NO);else puts(YES);}return 0;
}