【物理分析】2017.3.1杂题:[逃离]题解

来源:互联网 发布:php开源权限管理系统 编辑:程序博客网 时间:2024/05/19 13:27

题目概述

有个正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;}
0 0
原创粉丝点击