团体程序设计天梯赛 L3-013 非常弹的球 (30分)

题目链接:

L3-013 非常弹的球 (30分)

思路:

我们由动能公式可以求得速度 v = 2 E m v=\sqrt{\frac{2E}{m}}
设ang为 θ \theta ,则水平速度为 v x = cos θ 2 E m v_{x}=\cos\theta\sqrt{\frac{2E}{m}} ,竖直速度为 v y = sin θ 2 E m v_{y}=\sin\theta\sqrt{\frac{2E}{m}}
由于空气阻力等忽略不计,小球达到最高点所需时间 t = v y g t=\frac{v_{y}}{g} ,根据物理常识我们可知到达地面和升到最高点时间一致,因此从抛出到落地总时间为 2 t 2t ,小球水平移动的总距离 s = 2 t v x = 4 E sin θ cos θ m g 2 E m g s=2tv_{x}=\frac{4E\sin\theta\cos\theta}{mg}\leq\frac{2E}{mg} ,当 θ \theta π 4 \frac{\pi}{4} 时取最大值;
似乎从地上再次弹起来的角度还是刚开始抛出的角度?不知道,物理都忘光了
然后依次开始下一个循环直到答案满足精度需求;

代码:

#include<bits/stdc++.h>

using namespace std;

const double eps = 1e-9;
const double g = 9.8;

int main() {
#ifdef MyTest
	freopen("Sakura.txt", "r", stdin);
#endif
	double w, p, ans = 0;
	scanf("%lf %lf", &w, &p);
	for(double e = 1000; e > eps; e *= 1 - p / 100) {
		ans += 200 * e / w / g;	
	}
	printf("%.3f", ans);
	return 0;
}
发布了356 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_45228537/article/details/104189426