小明去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供 6 个每袋和 8 个每袋的包装(包装不可拆 分)。 可是小明现在只想购买恰好 n 个苹果,小明想购买尽量少的袋数方便携带。如果不能购买恰好 n 个 苹果,小明将不会购买。(非课本题目) 输入描述:输入一个整数 n,表示小明想购买 n(1 ≤ n ≤ 100)个苹果 输出描述:输出一个整数表示最少需要购买的袋数,如果不能买恰好 n 个苹果则输出-1,请用python并解释
时间: 2024-03-07 18:49:52 浏览: 156
Python代码如下:
```python
n = int(input())
# 先尝试购买8个每袋的包装,如果购买不了再尝试购买6个每袋的包装
bag8 = n // 8 # 购买8个每袋的袋数
remainder = n % 8 # 剩余的苹果数
while bag8 >= 0:
if remainder % 6 == 0: # 剩余的苹果数可以用6个每袋的包装购买
bag6 = remainder // 6 # 购买6个每袋的袋数
print(bag8 + bag6)
break
else: # 剩余的苹果数不能用6个每袋的包装购买,减少购买8个每袋的袋数
bag8 -= 1
remainder += 8
else: # 无法购买恰好n个苹果
print(-1)
```
首先尝试购买8个每袋的包装,计算出需要购买的袋数 `bag8`,以及剩余的苹果数 `remainder`。然后尝试用6个每袋的包装购买剩余的苹果,计算出需要购买的袋数 `bag6`,最终输出 `bag8 + bag6`。如果无法购买恰好n个苹果,则输出-1。
阅读全文