[問題描述]
在高爲 H 的天花板上有 n 個小球,體積不計,位置分別爲 0,1,2,….n-1。在地面上有一個小車(長爲 L,高爲 K,距原點距離爲 S1)。已知小球下落距離計算公式爲 d=1/2*g*(t^2),其中 g=10,t 爲下落時間。地面上的小車以速度 V 前進。
如下圖:
小車與所有小球同時開始運動,當小球距小車的距離 <= 0.00001 時,即認爲小球被小車接受(小球落到地面後不能被接受)。
請你計算出小車能接受到多少個小球。
[輸入]:
鍵盤輸人:
H,S1,V,L,K,n (l<=H,S1,V,L,K,n <=100000)
[輸出]:
屏幕輸出:
小車能接受到的小球個數。
[輸入輸出樣例]
[輸入]
5.0 9.0 5.0 2.5 1.8 5
[輸出]
1
【分析】
題目不難,直接模擬即可。注意精度問題。
【代碼】
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
double h,s,v,l,k,n;
int answer=0;
int main()
{
freopen ("freefaller.in","r",stdin);
freopen ("freefaller.out","w",stdout);
cin>>h>>s>>v>>l>>k>>n;
double t,y,y2;
t=sqrt(0.2*(h-k));
y=s-v*t;
y2=y+l;
t=sqrt(0.2*(h));
y=s-v*t;
for (int i=0;i<n;i++)
{
if (i>=y-0.00001&&i<=y2+0.00001)
{
answer++;
}
}
printf("%d",answer);
return 0;
}
#include <cstdio>
#include <cmath>
using namespace std;
double h,s,v,l,k,n;
int answer=0;
int main()
{
freopen ("freefaller.in","r",stdin);
freopen ("freefaller.out","w",stdout);
cin>>h>>s>>v>>l>>k>>n;
double t,y,y2;
t=sqrt(0.2*(h-k));
y=s-v*t;
y2=y+l;
t=sqrt(0.2*(h));
y=s-v*t;
for (int i=0;i<n;i++)
{
if (i>=y-0.00001&&i<=y2+0.00001)
{
answer++;
}
}
printf("%d",answer);
return 0;
}
沒有留言:
張貼留言