酷代码 AI
菜单
服务商

题目描述 小核桃需要向某地的一家糖果店运送 n n 颗糖。 小核桃可以使用两种类型的包装盒子: 一种是可以装 3 3 颗糖的 1 1 号包装; 另一种是可以装 5 5 颗糖的 2 2 号包装。 小核桃想让包装盒尽可能少。例如,他要运送 18 18 颗糖,则可以使用 6 6 个 1 1 号包装。但是,最优策略是 3 3 个 2 2 号包装和 1 1 个 1 1 号包装。这样总共有 4 4 个包装。 请你帮助小核桃找到需要包装盒最少的方案。 输入格式 输入数据共一行。 第一行一个正整数 n n,表示糖果颗数。 输出格式 输出数据共一行。 第一行,一个正整数表示需要包装盒最少的方案数的包装盒数,如果不可能用这 2 2 种包装盒运 n n 颗糖,输出 -1。用c++写

```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; // 优先使用装5颗糖的2号包装 int boxCount = -1; for (int box2 = n / 5; box2 >= 0; box2--) { int remaining = n - box2 * 5; if (remaining % 3 == 0) { int box1 = remaining / 3; boxCount = box1 + box2; break; } } cout << boxCount << endl; return 0; } ``` 这段C++代码的核心思路:先优先考虑使用能装5颗糖的2号包装,从可能使用的最大数量开始递减尝试。对于每一种2号包装的使用数量,计算剩余糖果数量,若剩余糖果数能被3整除就说明找到了一种可行方案,此时的包装总数就是结果并结束循环。要是尝试完所有可能都没找到合适的方案,就输出 -1。 [2026-02-08 19:32:48 | AI问答 | 242点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多