参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。
要解决这个问题,我们可以定义一个函数来计算给定票价时的总收入。然后,我们将在30到(30 + n)(包括30和(30 + n))之间遍历所有可能的票价,找出总收入最高的那个。由于题目要求取价格较低的那个,我们需要在找到新的更高收入时更新我们的答案。
以下是C++代码实现:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n; // 输入n值
int current_price = 30; // 初始票价
int max_income = 0; // 最大收入
int optimal_price = 30; // 最优票价
for (int price = 30; price <= 30 + n; ++price) {
int tickets_sold = 1200 - (price - 30) * n; // 根据票价计算售出的票数
int income = price * tickets_sold; // 计算总收入
if (income > max_income) { // 如果当前收入高于最大收入
max_income = income; // 更新最大收入
optimal_price = price; // 更新最优票价
}
}
cout << optimal_price << " " << max_income << endl; // 输出最优票价和最大收入
return 0;
}
这段代码首先读入整数n,然后从初始票价30开始,每次增加1元,直到达到30+n。对于每个票价,它都会计算售出的票数(1200减去票价增加部分乘以n),然后计算总收入(票价乘以票数)。如果这个总收入大于之前的最大收入,就更新最大收入和最优票价。最后,程序会输出最优票价和最大收入。