酷代码 AI
菜单

n 个人站一队(n >= 3),编号依次是 1 ~ n, 他们每个人手里都有若干个苹果。 1 号把自己手里的苹果尽量平均地分成两份,如果两份数量相等,则任选一份传递给 2 号;如果数量不等,则选择数量较少的一份传给 2 号。 2 ~ n - 1 号在接受了别人的苹果之后,都这样操作: 把自己手里的苹果尽量平均地分成两份,如果两份数量相等,则任选一份传递给下一个人;如果数量不等,则选择数量较少的一份传给下一个人。 请问,传递结束后,n 号手里有多少苹果? 输入 一行,若干个整数,以空格分开,表示 1 ~ n 号人手里苹果的数量 输出 一个正整数,表示 n 号手里的苹果数量

以下是使用 Python 实现的代码: ```python # 读取输入并将其转换为整数列表 nums = list(map(int, input().split())) # 从 1 号开始传递苹果 for i in range(len(nums) - 1): # 计算当前人苹果数量的两份 half1 = nums[i] // 2 half2 = nums[i] - half1 # 选择数量较少的一份传递给下一个人 if half1 <= half2: nums[i + 1] += half1 else: nums[i + 1] += half2 # 输出 n 号手里的苹果数量 print(nums[-1]) ``` 代码解释 1. 读取输入:使用 `input().split()` 读取一行输入,并以空格分隔成多个字符串,再使用 `map(int, ...)` 将这些字符串转换为整数,最后使用 `list(...)` 将其转换为列表 `nums`。 2. 传递苹果:使用 `for` 循环遍历从 1 号到 `n - 1` 号的人,对于每个人,计算其苹果数量的两份,选择数量较少的一份传递给下一个人。 3. 输出结果:输出 `nums` 列表的最后一个元素,即 `n` 号手里的苹果数量。 复杂度分析 - 时间复杂度:$O(n)$,其中 $n$ 是人数。 - 空间复杂度:$O(n)$,主要用于存储每个人手里的苹果数量。 [2025-12-20 20:39:38 | AI问答 | 352点数解答]

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