题目描述:
M(1<=M <=20)辆车需要在一条不能超车的单行道到达终点,起点到终点的距离为 N(1<=N<=400)。速度快的车追上前车后,只能以前车的速度继续行驶,求最后一车辆到达目的地花费的时间。
注:每辆车固定间隔 1 小时出发,比如第一辆车 0 时出发,第二辆车 1 时出发,依次类推
输入描述:
第一行两个数字:M N 分别代表车辆数和到终点的距离,以空格分隔
接下来 M 行,每行 1 个数字 S,代表每辆车的速度,其中 0< S<30
输出描述:
最后一辆车到达目的地花费的时间。
示例1:
输入
2 11
3
2
输出
5.5
说明:2 辆车,距离 11,0 时出发的车速度快,1 时出发的车,达到目的地花费 5.5
C++源码:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main() {
int M, N;
cin >> M >> N;
double arrived = 0;
for (int i = 0; i < M; ++i) {
int S;
cin >> S;
arrived = max(arrived, (double)N / S + i);
}
double allTime = arrived - (M - 1);
//cout << fixed << setprecision(5) << endl; //精确到小数位多少位
cout << allTime << endl;
system("pause");
return 0;
}