floor函数表示向下取整
#include<bits/stdc++.h> using namespace std; int n,a,d; double z; int main(){ cin >> n >> a >> d; while(n--){ double t0,v; cin >> t0 >> v; double ans=t0; if(v*v/(2*a)>=d){ ans+=sqrt(1.0*2*d/a); //这里注意要*1.0 } else{ ans+=d/v; ans+=v/(2*a); //这里比较巧妙,ans+=(1.0/2)*(v/a),因为另一个(1.0/2)*(v/a)在ans+=d/v时就加上了,还不明白,看参考博客 } z=max(z,ans); ans=z; ans*=10000; ans=floor(ans); //floor函数表示向下取整 ans/=10000; printf("%.4lf\n",ans); } return 0; }