用C++写实现以下程序:输入n个整数形成一个数组,第一个数乘以1,第二个数乘以2,第三个数乘以3,以此类推,然后再相加,判断数组如何排列才能使总数最大
时间: 2024-03-25 17:40:51 浏览: 25
基于C++的大数计算程序
好的,以下是使用C++实现你所描述的程序:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++) {
cin >> arr[i];
arr[i] *= (i + 1); // 按要求乘以系数
}
sort(arr, arr + n, greater<int>()); // 从大到小排序
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i] / (i + 1); // 按要求除以系数
}
cout << "最大总数为:" << sum << endl;
return 0;
}
```
程序首先读入整数n和n个整数,然后按照要求乘以系数,再从大到小排序,最后按照要求除以系数求和,输出最大总数。
例如,输入:
```
5
2 1 3 5 4
```
程序输出:
```
最大总数为:30
```
这是因为数组按照如下顺序排列时总数最大:
```
5 4 3 2 1
```
其中,第一个数乘以1,第二个数乘以2,以此类推,相加后得到30。
阅读全文