1. 正n边形的各个边相等,每个边对应的圆心角弧度为2Π/n;
假设其顶点到圆心的距离为r,则边长为2rsin(Π/n); 顶点至顶点的直线距离为2rsin(Π*d/n) (d为两个顶点间相隔的边数)
- 题目
他们来到一个半径为 𝑟 r的圆上,画了圆内接的正 𝑛 n边形。为了秀走位,他们只允许自己在多边形的边上移动。
同时,他们随便选取正 𝑛 n边形的一个顶点为1号顶点,按顺时针的顺序把其他的点叫做2号顶点,3号顶点……一开始,两人分别在 𝑖 i号顶点和 𝑗 j号顶点。
现在,牛牛要一边沿着多边形的边秀走位,一边走向牛能。他想知道,他最短要走多少距离才能走到牛能的旁边?
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main() {
int n,r,i,j;
cin>>n>>r>>i>>j;
int d = abs(i-j);//两顶点之间的间隔
int step = min(d,n-d);//经过的最少边数
double l = 2*r*sin(M_PI/n);//M_PI--->Π
double ans = step*l;// 最短距离
cout<<fixed<<setprecision(10)<<ans;// 输出结果,保留足够的小数位数
return 0;
}

京公网安备 11010502036488号