【正经题解】自由落体
2024-02-21 14:10:04
发布于:浙江
22阅读
0回复
0点赞
这道题似乎并不用特意在乎精度,只是提醒大家一点:能全用尽量都用,这样能避免中间转换是不必要的精度问题。
相当于用了贪心的思想,并没有整体循环,考虑到最早接的球和最晚的球中间一定都能接到
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
double h,s1,v,l,k,n;
scanf("%lf%lf%lf%lf%lf%lf",&h,&s1,&v,&l,&k,&n);
double Maxtime=sqrt(h/5);//由题目给出的公式不难得出:球落地前的最大时间
double Mintime=sqrt((h-k)/5);//因为小车的高度要考虑,所以还要算出最短的时间
int s=int(s1-Mintime*v+l);//那么这就是最早的小球了
int e=int(s1-Maxtime*v);//这个是最晚的?
s=fmin(s,n);//这里需要考虑不要把x轴的算进来
e=fmax(e,0);
printf("%d",s-e);//最终的个数就是最早接球的编号-最晚的了
return 0;
}
这里空空如也
有帮助,赞一个