在一行上输入一个整数
,表示小明想要购买的橙子数量。
如果不能通过购买整袋橙子凑出
个橙子,则输出
;否则,输出一个整数表示最少需要购买的袋数。
20
3
7
-1
本题已于下方时间节点更新,请注意题解时效性:
1. 2025-06-25 优化题面文本与格式,修正为单组输入。
2. 2025-08-07 优化题面文本与格式,扩大数据范围。
3. 2025-11-19 优化题面文本与格式;补充一组样例。新增若干组测试数据。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 目标橙子数量
// 标签用于找到结果后直接结束
res: {
// 全用8个装的情况
if (n % 8 == 0) {
System.out.println(n / 8);
break res;
}
// 从多到少尝试8个装的袋数
for (int e = n / 8; e >= 0; e--) {
int left = n - e * 8; // 剩余橙子数
// 剩余数量能被6整除
if (left >= 0 && left % 6 == 0) {
System.out.println(e + left / 6); // 总袋数
break res;
}
}
// 无法恰好购买
System.out.println(-1);
}
sc.close();
}
}