题解:P16466 [GKS 2013 Practice] Captain Hammer

· · 题解

一道题居然能涨这么多知识

思路

物理斜抛模型计算题。由斜抛射程公式先用反正弦求出弧度值,再转角度除以二就是所求最小仰角。

斜抛运动

斜抛运动是将物体斜向射出,在重力作用下,物体作曲线运动,它的运动轨迹是抛物线,这种运动叫做“斜抛运动”。 抛体运动水平射程公式为 D=\frac{V^{2}\sin(2\theta)}{g} 解得 \sin(2\theta)=\frac{D\cdot g}{V^{2}} 其中 g=9.8m/s,因此 \theta=\frac{1}{2}\arcsin(\frac{Dg}{V^{2}})

code

#include<bits/stdc++.h>
using namespace std;
#define double long double
double g=9.8;
double p=acos(-1.0);//π
int main()
{
    cout<<fixed<<setprecision(7);//先设置好输出格式
    int t;
    cin>>t;
    for(int i=1;i<=t;i++)
    {
        double v,d;
        cin>>v>>d;
        double s=d*g/(v*v);
        if(s>1.0) s=1.0;//防止浮点误差,超出[-1,1]
        double r=asin(s);//计算s的反正弦值
        double a=r*180.0/p/2.0;
        cout<<"Case #"<<i<<": "<<a<<'\n';
    }
    return 0;
}