写一个c++程序,解决以下问题:某几位同学准备要5排一起打手机游戏,现在他们5个人一共有N台手机,但是各个手机剩余电量不等,假设每玩一分钟需要消耗电量1%,不玩手机不消耗电量,手机电量消耗光之后可以换剩余的有电的手机继续一起游戏,那么他们最多能保持多久的5人一起游戏时间?
时间: 2023-06-19 10:04:37 浏览: 46
以下是一个 C++ 程序,可以解决这个问题:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> power(n);
for (int i = 0; i < n; i++) {
cin >> power[i];
}
// 将手机电量从大到小排序
sort(power.begin(), power.end(), greater<int>());
int max_time = 0;
for (int i = 0; i < n / 5; i++) {
// 每组五个人中电量最低的手机
int min_power = power[i * 5 + 4];
// 该手机可以支撑的最长时间
int time = min_power / 5;
if (time > max_time) {
max_time = time;
}
}
cout << max_time << endl;
return 0;
}
```
程序的思路是,首先读入每个手机的电量,然后将它们从大到小排序。接着,每组五个人中电量最低的手机可以支撑的最长时间就是该手机电量除以5。我们依次计算每组的最长时间,最后输出所有组中的最大值即可。
注意,程序假设每个人都在玩游戏,如果有人不玩游戏,那么实际上可以多出一台手机的电量来支撑其他人的游戏。