酷代码 AI
菜单
服务商

P3815禾木买铅笔 入门 新手组 简易运算 标准IO 传统题

题目描述 这道题来自洛谷的 P3815《【模板】乘法逆元》的类似场景“禾木买铅笔”。题目大概是:禾木需要购买一定数量的铅笔,商店有不同的包装规格和对应价格,要计算出禾木购买所需铅笔最少需要花费多少钱。 输入格式 第一行包含一个正整数 $n$,表示禾木需要购买的铅笔数量。 接下来三行,每行用两个正整数描述一种包装的铅笔:其中第一个整数表示这种包装内铅笔的数量,第二个整数表示这种包装的价格。 输出格式 一个整数,表示禾木最少需要花费的钱。 代码实现(Python) ```python # 读取需要购买的铅笔数量 n = int(input()) # 初始化最小花费为一个较大的值 min_cost = float('inf') # 循环三次,处理三种不同包装的铅笔 for _ in range(3): # 读取每个包装中铅笔的数量和价格 num, price = map(int, input().split()) # 计算需要购买的包装数量 # 如果 n 不能被 num 整除,需要向上取整 packs = (n + num - 1) // num # 计算购买这些包装所需的花费 cost = packs * price # 更新最小花费 if cost < min_cost: min_cost = cost # 输出最小花费 print(min_cost) ``` 复杂度分析 - 时间复杂度:代码只对三种包装进行了一轮遍历,因此时间复杂度是 $O(1)$。 - 空间复杂度:代码只使用了几个额外的变量,因此空间复杂度也是 $O(1)$。 代码解释 1. 输入处理:首先读取需要购买的铅笔数量 `n`,然后使用一个循环三次的 `for` 循环读取三种包装的铅笔信息,包括每个包装内铅笔的数量和价格。 2. 计算花费:对于每种包装,计算需要购买的包装数量,使用 `(n + num - 1) // num` 实现向上取整。然后计算购买这些包装所需的花费。 3. 更新最小花费:将当前包装的花费与之前记录的最小花费进行比较,如果当前花费更小,则更新最小花费。 4. 输出结果:最后输出最小花费。 [2026-02-11 20:20:52 | AI问答 | 530点数解答]

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