首先题目是一道模拟题目,不过思考很有意思。
所有球同时下落,那么接住球的条件是什么?
首先我们思考 小球落到与小车的顶上时 火车头在哪 如果此刻火车头还在右边往左边走 那么这个球一定是接不到的
其次考虑 当小球下落到快接触地面时 火车尾在哪? 如果此刻火车尾已经在小球的左边 那么这个球也一定是接不到的
于是结论就是: 判断小球落到火车顶时这段时间 火车头在哪? 当小球落到地面的瞬间 火车尾在哪?
坑点是 题目中说的误差记得要考虑一下 火车头如果在小球的右边 还差0.0001 那么可以忽略掉 如果火车尾在小球左边 多走了0.0001 那么也可以忽略掉
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 #include <cstdio> 2 #include <algorithm> 3 #include <cmath> 4 using namespace std; 5 double h,s1,v,l,k; 6 int n; 7 int ans; 8 int main(){ 9 scanf("%lf%lf%lf%lf%lf%d",&h,&s1,&v,&l,&k,&n); 10 for(int i=0;i<n;i++){ 11 if( (s1-sqrt( (h-k)/5 )*v+l+0.0001 > i) && (s1-sqrt(h/5)*v-0.0001<i)) ans++; 12 } 13 printf("%d",ans); 14 return 0; 15 }