题目概述
有个正n边形,边长为a,所有端点都向着顺时针方向的下一个端点按速度v移动,求所有点到达中心点的时间。
解题报告
ps:这是一道物理题,物理题,物理题!所以说大家还是要学好物理的。
通过yy可以发现,不管怎么移动,图形都是正n边形,所以我们只需要直接分析初始状态即可,后面都同理:
把速度v分解为v1和v2,显然只有v1是向中心点前进的,v2没用,所以答案就是初始点到中心点的距离dis/v1!现在的问题是如何求dis和v1,其实很简单,首先先看dis:
把中心点向所有端点连线,就可以得到n个三角形,取任何一个三角形分析即可。
α=2*π/n/2(圆心角分成n份之后/2)
然后就可以得到dis=a/2/cos(α)。
之后开始求v1:
v1=v*cos(θ),而θ很容易求出:正n边形的角度为(n-2)π,而正n边形θ有2*n个(也就是说2*nθ=(n-2)* π),所以θ=(n-2)*π/(2*n)。
最后dis/v1就是答案。
时间复杂度:O(1)
期望得分:100分
示例程序
#include<cstdio>
#include<cmath>
using namespace std;
const double PI=acos(-1);
double n,a,v,Ag,dis,V;
int main()
{
freopen("escape.in","r",stdin);
freopen("escape.out","w",stdout);
scanf("%lf%lf%lf",&n,&a,&v);
dis=a/2/sin(2*PI/n/2);
Ag=(n-2)*PI/n/2;
V=v*cos(Ag);
printf("%.5lf\n",dis/V);
return 0;
}