【NOIP2016 普及组 入门】买铅笔(pencil)------------1
时间: 2024-12-27 10:29:07 浏览: 7
### NOIP2016 普及组 入门题 买铅笔
#### 题目描述
P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。商店一共有3种包装的铅笔,不同包装内的铅笔数量和价格如下:
- 第一种包装:每包有12支铅笔,售价为5元;
- 第二种包装:每包有20支铅笔,售价为8元;
- 第三种包装:每包有50支铅笔,售价为15元。
为了公平起见,P老师决定只买同一种包装的铅笔[^2]。
给定所需购买的铅笔总数`n`,请计算并输出至少需要花费多少钱才能买到恰好`n`支铅笔。
#### 输入格式
输入文件仅一行,包含一个正整数`n` (1 ≤ n ≤ 10^8),表示要买的铅笔数目。
#### 输出格式
输出文件也仅一行,包含一个整数,表示最少需要的钱数。
#### 示例代码实现
下面是一个Python程序来解决这个问题:
```python
def min_cost_to_buy_pencils(n):
packages = [(12, 5), (20, 8), (50, 15)] # 定义各种包装的数量与价格
costs = []
for count, price in packages:
if n % count == 0:
cost = (n // count) * price
costs.append(cost)
if not costs:
return "无法找到合适的组合"
return min(costs)
if __name__ == "__main__":
n = int(input())
result = min_cost_to_buy_pencils(n)
print(result)
```
上述算法尝试通过遍历所有可能的包装选项,并检查是否可以正好满足需求量。如果存在多个符合条件的选择,则返回最小的成本;如果没有合适的选择则提示错误消息。然而这个解决方案并没有考虑到当`n`不是任何包装大小倍数的情况下的最优解法,在实际竞赛中还需要进一步优化逻辑处理这些边界情况[^1]。
阅读全文