【题目描述】
期末来临了,班长小Q决定将剩余班费x元钱,用于购买若干支钢笔奖励给一些学习好、表现好的同学。已知商店里有三种钢笔,它们的单价为6元、5元和4元。小Q想买尽量多的笔(鼓励尽量多的同学),同时他又不想有剩余钱。请您编一程序,帮小Q制订出一种买笔的方案。
【输入】
一个正整数x(剩余班费)。
【输出】
一行,依次为6元、5元和4元钱笔的数目,用一个空格隔开。
【输入样例】
10
【输出样例】
1 0 1
#include<iostream>
#include<cmath>
using namespace std;
int main() {
int x = 0;
cin >> x;
for (int i = 0; i <= x / 6; i++) {
for (int j = 0; j <= x / 5; j++) {
int rem = x - i * 6 - j * 5;
if (rem % 4 == 0 || rem == 0) {
cout << i << " " << j << " " << rem / 4 << endl;
goto end;
}
}
}
end:
return 0;
}
这里利用枚举买6元笔和5元笔的数量,然后判断剩余的钱能否被4整除,就是能买的最大数量.并且题目输入的数据范围不是很大.枚举也可以不超时.