首页 > 试题广场 >

买橘子

[编程题]买橘子
  • 热度指数:11561 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}小明去附近的水果店买橙子。水果商贩只提供整袋购买,有每袋 6 个和每袋 8 个的包装(包装不可拆分)。可是小明只想购买恰好 n 个橙子,并且尽量少的袋数方便携带,请你帮他计算一下最少需要购买的袋数。如果不能购买恰好 n 个橙子,小明将不会购买,此时输出 -1

输入描述:
\hspace{15pt}在一行上输入一个整数 n \left(1 \leqq n \leqq 10^5\right),表示小明想要购买的橙子数量。


输出描述:
\hspace{15pt}如果不能通过购买整袋橙子凑出 n 个橙子,则输出 -1;否则,输出一个整数表示最少需要购买的袋数。
示例1

输入

20

输出

3
示例2

输入

7

输出

-1

备注:
本题已于下方时间节点更新,请注意题解时效性:
1. 2025-06-25 优化题面文本与格式,修正为单组输入。
2. 2025-08-07 优化题面文本与格式,扩大数据范围。
3. 2025-11-19 优化题面文本与格式;补充一组样例。新增若干组测试数据。
n = int(input())
flag = False
for num_8 in range(n//8,-1,-1):
    if (n-8*num_8)%6==0:
        print(num_8+(n-8*num_8)//6)
        flag = True
        break
if not flag:
    print(-1)
发表于 2025-08-24 15:55:43 回复(0)
import sys

n = int(sys.stdin.read())
i = n//8
count = 0

if n%8 == 0:
    print(n/8)
else:
    while i>=0:
        if (n-i*8)%6 == 0:
            print(i+(n-i*8)//6)
            count += 1
            break
        else:
            i -= 1
if count == 0:
    print("-1")
发表于 2025-08-23 21:34:22 回复(0)
n = int(input())
cnt = -1
for i in range(n//6+1):
    left = n - 6*i
    if left % 8 == 0:
        cnt = i+left//8
        break
    else:
        continue

print(cnt)

发表于 2025-08-02 17:18:16 回复(0)
n = int(input())
y = -1
if n%2 != 0:
   y = -1
elif n<6 or n == 10:
   y = -1
else:
    y = n // 8 + 1
print(int(y))
发表于 2025-07-26 01:38:46 回复(0)

问题信息

上传者:小小
难度:
5条回答 5372浏览

热门推荐

通过挑战的用户

查看代码
买橘子