P1033 自由落体 (数论)

题目传送门

题意:物理题0-n-1 n个位置的小球自由落体,一长l高k的小车从s1开始以速度v匀速运动,求小车最多接住多少个小球

思路:找到最早和最晚接到的小球编号,相减+1即可。注意本题卡精度算出i_l和i_r分别要减1e4 和加1e-4。还要i_l都到不了最左端的情况。

#include<bits/stdc++.h>
using namespace std;
int n;
double h,s1,v,l,k;
int main()
{
    cin>>h>>s1>>v>>l>>k>>n;
    double t_max=sqrt(h/5);
    double t_min=sqrt((h-k)/5);
    int i_r=int(s1-t_min*v+l+1e-4),i_l=(int)ceil(s1-t_max*v-1e-4);
    i_r=min(i_r,n-1);i_l=max(i_l,0);
    if(i_l>n-1) puts("0");
    else cout<<i_r-i_l+1;
}