酷代码 AI
菜单

乌拉乎太饿了,于是他来到了一家自助餐厅准备吃大餐,共有 𝑛 盘食物,编号依次为 1 ~ 𝑛 ,且每盘食物都有各自不同的饱腹值 𝑎 𝑖 。乌拉乎目前饥饿度为 𝑚 ,如果某一盘食物的饱腹值为 5 ,那么吃掉这盘食物之后,乌拉乎的饥饿度就会减少 5 点。当乌拉乎的饥饿度首次小于等于 0 ,那么乌拉乎就吃饱不会再吃了。 乌拉乎想要按顺序选择并吃掉一些食物,因为并不是所有的食物他都喜欢,例如编号为 3 的倍数,以及编号为 7 的倍数的食物,乌拉乎都不喜欢。 请你编写程序,输出乌拉乎吃完编号为多少的食物后就吃饱了。如果选完了 𝑛 盘食物,乌拉乎依然没有吃饱,那么输出 − 1 。

以下是使用 Python 实现的代码: ```python # 读取输入 n, m = map(int, input().split()) # 读取每盘食物的饱腹值 a = list(map(int, input().split())) # 初始化当前饥饿度 current_hunger = m # 遍历每盘食物 for i in range(n): # 检查食物编号是否是 3 或 7 的倍数 if (i + 1) % 3 != 0 and (i + 1) % 7 != 0: # 减少饥饿度 current_hunger -= a[i] # 检查是否吃饱 if current_hunger <= 0: # 输出吃饱时的食物编号 print(i + 1) break else: # 如果遍历完所有食物都没吃饱,输出 -1 print(-1) ``` 代码解释: 1. 输入读取:首先读取两个整数 `n` 和 `m`,分别表示食物的盘数和乌拉乎的初始饥饿度。然后读取 `n` 个整数,表示每盘食物的饱腹值,并存储在列表 `a` 中。 2. 初始化饥饿度:将当前饥饿度 `current_hunger` 初始化为 `m`。 3. 遍历食物:使用 `for` 循环遍历每盘食物,检查食物编号是否是 3 或 7 的倍数。如果不是,则减少当前饥饿度。 4. 检查是否吃饱:每次减少饥饿度后,检查当前饥饿度是否小于等于 0。如果是,则输出当前食物的编号并跳出循环。 5. 未吃饱情况:如果遍历完所有食物都没有吃饱,则使用 `else` 语句输出 -1。 复杂度分析: - 时间复杂度:$O(n)$,其中 $n$ 是食物的盘数。因为只需要遍历一次所有食物。 - 空间复杂度:$O(n)$,主要用于存储每盘食物的饱腹值。 [2026-01-25 16:56:35 | AI问答 | 462点数解答]

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