| |
|
题三 自由落体(存盘名:NOIPG3)
[问题描述]:
在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1。在地面上有一个小车(长为 L,高为 K,距原点距离为 S1)。已知小球下落距离计算公式为
d=1/2*g*(t^2),其中 g=10,t 为下落时间。地面上的小车以速度 V 前进。
如下图:

小车与所有小球同时开始运动,当小球距小车的距离 <= 0.00001 时,即认为小球被小车接受(小球落到地面后不能被接受)。
请你计算出小车能接受到多少个小球。
[输入]:
键盘输人:
H,S1,V,L,K,n (l<=H,S1,V,L,K,n <=100000)
[输出]:
屏幕输出:
小车能接受到的小球个数。
[输入输出样例]
[输入]:
5.0 9.0 5.0 2.5 1.8 5
[输出]:
1
分析:
显然,小车太慢(即V<=Vmin)或太快(V>Vmax)时,一个球也接不到。即在V<=Vmin或V>Vmax时输出为0。下面分别求Vmin和Vmax。当第n-1个小球落地的瞬间,小车在小球的右端离小球尚有e=0.00001的距离,小车的这个极小速度就是Vmin。小车从天花板落到地面的时间t1= ,这段时间内小车走了S1-(n-1)-e,所以Vmin=
。当第1个小球落到距小车的上表面为e的瞬间,小车在小球的左端离小球距离为e,小车的这个极大速度就是Vmax。小球从天花板落到离小车上表面为e的距离的时间为t2=
,小车移动的距离为S1+L+e,所以Vmax=
。
那么,当Vmin<V<=Vmax时,就可接到球了。显然,时间段[t2,t1]是小车接球的时间,在t2时刻,小车的位置为:左表面离原点距离为S1-V*t2,右表面离原点距离为S1-V*t2+L;在t1时刻,小车的位置为:左表面离原点距离为S1-V*t1,右表面离原点距离为S1-V*t1+L;故小车的接球范围(在小车运动范围外扩展e)为[S1-V*t1-e,S1-V*t2+L+e],球的个数就等于接球范围内所包含的0~n-1之间的整数的个数.
程序清单
program NOIPG3;
const g=10{重力加速度};e=1E-5;{小车接受小球的极限距离}
var H,s1,v,l,k,t1,t2,Vmin,Vmax:real;
n2,n1,num,n:integer;
begin
readln(h,s1,v,l,k,n);num:=-1;
t1:=sqrt(2*h/g);{小球落地时间}
if h<=k+e then t2:=0 else t2:=sqrt(2*(h-k-e)/g);{小球落到小车上的最短时间}
if s1-v*t2+L+e<0
then num:=0
else n2:=trunc(s1-v*t2+L+e);{小车接受的球的最大编号为n2}
if n2>n-1 then n2:=n-1;{n2取trunc(s1-v*t2+L+e)与n-1的较小值}
if s1-v*t1-e<=0
then n1:=0
else if s1-v*t1-e>n-1
then num:=0
else if (s1-v*t1-e)=trunc(s1-v*t1-e)
then n1:=trunc(s1-v*t1-e){小车接受的球的最小编号为n1}
else n1:=trunc(s1-v*t1-e)+1;
if num=-1 then num:=n2-n1+1;{小车接受的球的个数为num}
writeln(num);
end.
点评:
送分题 本题"物理味"有余而"信息味"不足,连循环语句都用不上!难见的"送分题",可物理较差的人也得不到多少分哦!
相关链接: 提高组试题解题报告(一)
提高组试题解题报告(二)
提高组试题解题报告(三)
提高组试题解题报告(四)
测试数据下载
|
|
|