2353 - 自由落体
在高为H的天花板上有n个小球,体积不计,位置分别为0,1,2,... n-1。在地面上有一个小车(长为L,高为K,距原点距离为 S1)。已知小球下落距离计算公式为d=1/2*g*(t^2),其中g=10,t为下落时间。地面上的小车以速度V前进。
如下图:

<span style="line-height:1.5;">小车与所有小球同时开始运动,当小球距小车的距离<=0.00001时,即认为小球被小车接受(小球落到地面后不能被接受)。<br />
请你计算出小车能接受到多少个小球。
Input
每个测试文件只包含一组测试数据,每组输入H,S1,V,L,K,n(1<=H,S1,V,L,K,n<=100000)。
Output
对于每组输入数据,输出小车能接受到的小球个数。
Examples
Input
5.0 9.0 5.0 2.5 1.8 5
Output
1
Solution C++
/* 题目大意: 思路: */ #include<map> #include<set> #include<stack> #include<queue> #include<cmath> #include<string> #include<cstdio> #include <vector> #include<cstring> #include<sstream> #include<cstdlib> #include<iostream> #include<algorithm> using namespace std; #define ll long long #define ul unsigned long long #define inf 0x3f3f3f #define esp 1e-8 #define pp printf("\n"); #define pn(a) printf("%d\n",a); #define bug printf("mmp\n"); #define mm(a,b) memset(a,b,sizeof(a)) #define T() int test,q=1;scanf("%d",&test); while(test--) const int maxn=2e6+10; const double pi=acos(-1.0); const int N=1001; const int mod=1e9+7; int main() { double H,s1,v,l,k; int n; while(scanf("%lf%lf%lf%lf%lf%d",&H,&s1,&v,&l,&k,&n)!=EOF) { double tmax=sqrt(H/5); double tmin=sqrt((H-k)/5); int cnt=0; double x1=s1-v*tmax; double x2=s1-v*tmin+l; for(int i=0; i<n; i++) { if(i>=x1-0.00001&&i<=x2+0.00001) cnt++; } printf("%d\n",cnt); } return 0; }