P1033 [NOIP2002 提高组] 自由落体
题目
在高为H的天花板上有n个小球,体积不计,位置分别为0,1,2,…,n-10,1,2,…,n−1。在地面上有一个小车(长为L,高为K,距原点距离为S )。已知小球下落距离计算公式为d=0.5×g×(t2),其中 g=10,t为下落时间。地面上的小车以速度V前进。
如下图:

小车与所有小球同时开始运动,当小球距小车的距离≤0.0001(感谢Silver_N修正) 时,即认为小球被小车接受(小球落到地面后不能被接受)。
请你计算出小车能接受到多少个小球。
输入格式
键盘输入:
H,S1,V,L,K,n
输出格式
屏幕输出:
小车能接受到的小球个数。
输入输出样例
输入
5.0 9.0 5.0 2.5 1.8 5
输出
1
思路
这是一道比较简单的物理题。由公式d=0.5×g×(t2)以及g=10,可以算出t=sqrt(d/5)。分别得出车刚开始接到小球的时间tmin和车最后接到小球的时间tmax。
与之对应的就是车尾刚好接到小球的最远距离smax和车头最后能接到小球smin。
但要考虑到小球个数n以及坐标原点o的限制。
代码
// A code block
#include <iostream>
#include <math.h>
#include <algorithm>
using namespace std;
int main()
{
double h,s1,v,l,k;
int n;
cin>>h>>s1>>v>>l>>k>>n;
double tmin,tmax;
tmax=sqrt(h/5);
tmin=sqrt((h-k)/5);
int smin,smax;
smax=s1-v*tmin+l;
smin=s1-v*tmax;
int a,b;
a=min(smax,n);
b=max(smin,0);
cout<<a-b;
return 0;
}
该博客讨论了P1033 [NOIP2002 提高组] 自由落体的编程题,涉及小球从高处落下,小车以一定速度移动并接收小球的情景。通过物理公式d=0.5×g×(t^2)计算下落时间,确定小车能接收到小球的数量。输入包括高度、小车初始位置、速度、长度和高度,输出为小车能接收到的小球个数。博主给出了解题思路和C++代码实现。
1553

被折叠的 条评论
为什么被折叠?



