CCCC天梯赛 L3-013. 非常弹的球

看到大家好像都写了这道题的题解,那我也来写一份。。。

首先,有这么一个定理:

在水平地面上,斜抛一个球,不考虑空气阻力的情况下,45°投掷,能投掷得最远。若不是水平地面,则视地面坡度,其最优角度也不一样。

定理证明,可以设个落地点距离函数,角度为变量,初速度等为常量,求个导数就能得到最优角度了。这里就不证明了。(没错,就是因为我懒得写)

然后,可以得到以下式子:

速度与能量的关系:v = sqrt(2*E/m)

45°抛射角时,水平速度:v_v = sqrt(0.5)*v = sqrt(E/m)

45°抛射角时,竖直速度:v_h = sqrt(0.5)*v = sqrt(E/m)

45°抛射角时,球在空中运动的时间: t = △v_h/g = 2*v_h/g = 2*sqrt(E/m)/g

落地点的距离:s = v_v*t = 2*E/(m*g)

然后考虑能量损失,每次损失p%,也就是说

s[0]=2*E/(m*g)

s[i]=s[i-1]*(1-0.01*p)

求s[k]的和,即比值小于1的等比数列求和,直接套用等比数列求和公式。

sum = (1-(1-0.01*p)^)/(1-(1-0.01*p))*s[0] = s[0]/(0.01*p) = 2*E/(0.01*p*m*g)

然后就弄好了。

#include <bits/stdc++.h>
using namespace std;

int main()
{
	double w,p;
	while(cin>>w>>p)
	{
		printf("%.3f\n",2*1000/(0.0001*p*w*9.8));
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值