题目描述
在高为 H H H的天花板上有 n n n个小球,体积不计,位置分别为 0 , 1 , 2 , … , n − 1 0,1,2,…,n-1 0,1,2,…,n−1。在地面上有一个小车(长为 L L L,高为 K K K,距原点距离为 S 1 S_1 S1)。已知小球下落距离计算公式为 d = 0.5 × g × ( t 2 ) d=0.5 \times g \times (t^2) d=0.5×g×(t2),其中 g = 10 g=10 g=10, t t t为下落时间。地面上的小车以速度 V V V前进。
如下图:
小车与所有小球同时开始运动,当小球距小车的距离 ≤ 0.0001 \le 0.0001 ≤0.0001(感谢Silver_N修正) 时,即认为小球被小车接受(小球落到地面后不能被接受)。
请你计算出小车能接受到多少个小球。
输入格式
键盘输入:
H , S 1 , V , L , K , n ( l ≤ H , S 1 , V , L , K , n ≤ 100000 ) H,S_1,V,L,K,n(l \le H,S_1,V,L,K,n \le 100000) H,S1,V,L,K,n(l≤H,S1,V,L,K,n≤100000)
输出格式
屏幕输出:
小车能接受到的小球个数。
输入输出样例
输入 #1 复制
5.0 9.0 5.0 2.5 1.8 5
输出 #1 复制
1
说明/提示
当球落入车的尾部时,算作落入车内。
思路
我还不知道那个
0.0001
0.0001
0.0001 是干啥吃的
反正就这样,可以得出
t = d 0.5 g = d 5 t=\sqrt{\dfrac{d}{0.5g}}=\sqrt{\dfrac{d}5} t=0.5gd=5d
所以,最先拿到的时间应该是
t 1 = H − K 5 t_1=\sqrt{\dfrac{H-K}5} t1=5H−K
因为还要考虑小车的高度
而最后拿到的时间就应该是
t 2 = H 5 t_2=\sqrt{\dfrac{H}5} t2=5H
所以,最先拿到的地方就是
S 1 = S 0 − t 1 × V + L S_1=S_0-t_1\times V+L S1=S0−t1×V+L
因为小车还有宽度
而最后拿到的地方就应该是
S 2 = S 0 − t 2 × V S_2=S_0-t_2\times V S2=S0−t2×V
好了最后输出这之间有多少球就可以了
代码
#include<bits/stdc++.h>
using namespace std;
double h,s,v,l,k;
int n;
double t1,t2;
int s1,s2;
int main(){
cin>>h>>s>>v>>l>>k>>n;
t1=sqrt((h-k)/5);
t2=sqrt(h/5);
s1=s-t1*v+l;
s2=s-t2*v;
s1=min(s1,n);//边界
s2=max(s2,0);//边界
printf("%d",s1-s2);
return 0;
}