洛谷 P1033 自由落体
题目描述
在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,…,n−1 。在地面上有一个小车(长为 L ,高为 K ,距原点距离为 S1 )。已知小球下落距离计算公式为 d=0.5×g×(t2) ,其中 g=10 , t 为下落时间。地面上的小车以速度 V 前进。
如下图:
小车与所有小球同时开始运动,当小球距小车的距离 ≤0.0001 (感谢Silver_N修正) 时,即认为小球被小车接受(小球落到地面后不能被接受)。
请你计算出小车能接受到多少个小球。
输入输出格式
输入格式:
键盘输入:
H,S1,V,L,K,n(l ≤ H,S1,V,L,K,n ≤ 100000)
输出格式:
屏幕输出:
小车能接受到的小球个数。
输入输出样例
说明
当球落入车的尾部时,算作落入车内。
思路:物理题
(啊呀呀,我物理最烂了 不过幸好自由落体还是会的 huaji)
#include<algorithm> #include<cstdio> #include<cmath> using namespace std; const double precision=1e-6; int n, p, q; double h, s, v, l, k, x, y, z = 1e-5; int main() { scanf("%lf%lf%lf%lf%lf%d", &h, &s, &v, &l, &k, &n); x = s - sqrt(h/5) * v - z; p = (int)x; if(x-p > precision) p++; y = h - k - sqrt(z); y = max(0.0, y); y = s + l - sqrt(y/5) * v + z; q = (int)y; p = max(0, p); q = min(n-1, q); int tmp = max(0, q-p+1); printf("%d\n", tmp); return 0; }