1
-1
14
1 1 1
33
1 2 6
先枚举总共可以组多少套(其实就是圆规的套数)
若无法组成完整一套,则不断缩减圆规套数以扩大总数
#include<iostream>
#include<cstdio>
using namespace std;
int n, b;
int main()
{
scanf("%d", &n);
if (n == 0) {printf("0 0 0"); return 0;}
for (int i = n / 14; i >= 0; --i) {//枚举圆规数量
for (int j = i; j * 4 + i * 10 <= n; ++j) { //枚举笔的数量,这里笔记本暂定为和圆规买的套数一样
for (int k = i; k * 3 + j * 4 + i * 7 <= n; ++k)//枚举笔记本
if (7 * i+ 4 * j + 3 * k == n) {//若满足条件直接输出,因为题目给了最优解唯一
printf("%d %d %d", i, j, k);
return 0;
}
}
}
printf("-1");
}