【题目描述】
期末来临了,班长小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整除,就是能买的最大数量.并且题目输入的数据范围不是很大.枚举也可以不超时.