题意:给你三个顶点,这三个点是一个正多边形上的顶点,问这个正多边形最少有多少个边?
思路:三个点,三角形–>外接圆–>必定也是该凸多边形的外接圆-
我们可以把三个点当做一个三角形放在它的外接圆上,然后求出每个角的度(即三角形分的三个弧度所对应的圆周角),设顶点数为n,我们只需计算,三角形任意两点所对应的圆心角是否是2PI/n的倍数就可以了,并且i很小,可以枚举。
#include <stdio.h>
#include <math.h>
//注意精度,1e-8直接WA了一次
#define EPS 1e-6
#define PI acos(-1.0)
double dist[3],angle[3];
double point[3][2];
double cal_dist(int i,int j)
{
return sqrt((point[i][0] - point[j][0]) * (point[i][0] - point[j][0]) + (point[i][1] - point[j][1]) * (point[i][1] - point[j][1]));
}
///求圆周角
double cal_angle(int i,int j,int k)
{
return acos((dist[i] * dist[i] + dist[j] * dist[j] - dist[k