1. 程式人生 > >洛谷P1033 自由落體 題解

洛谷P1033 自由落體 題解

題目連結:https://www.luogu.org/problemnew/show/P1033

呵呵,真的學好物理比較重要,前些年卡在這題上的我今天終於會做了,可惡的自由落體(也許是我太弱了吧

分析:

這道題似乎並不用特意在乎精度,只是提醒大家一點:能全用double儘量都用,這樣能避免中間轉換是不必要的精度問題。
公式的推導相信大家都會吧,這裡不再贅述,也會在程式碼中詳細說明。
下面見程式碼

程式碼:

#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; } 撒花~