酷代码 AI
菜单

在数轴上,一共有 n 个景点,坐标分别为x1,x2,x3,....,xn 你初始在x=0位置,每次你可以往左 d 个单位或往右 d 个单位,请问为了访问到每一个景点,d 最大可以取到多少? 输入 输入共两行: 第一行,第一个正整数n 第二行,n个整数 x1,x2,x3,....,xn 输出 输出一行,表示答案 样例输入 复制 2 -4 4 样例输出 复制 4 提示 对于 30%的数据,1≤n≤10 对于 60%的数据,1≤n≤10^3 对于 100%的数据,1≤n≤10^5,−10^9≤x1≤x2≤...≤xn≤10^9 来源/分类

下面是对这个问题的分析和解决方案: 问题分析 要找到最大的 `d` 值,使得从 `x = 0` 出发,每次向左或向右移动 `d` 个单位,能够访问到数轴上的每一个景点。对于每个景点的坐标 `x[i]`,需要满足 `x[i]` 是 `d` 的整数倍,因此最大的 `d` 就是所有景点坐标的最大公约数。 代码实现 以下是用 Python 实现的代码: ```python # 定义求最大公约数的函数 def gcd(a, b): while b: a, b = b, a % b return a # 读取输入 n = int(input()) # 读取景点坐标 x = list(map(int, input().split())) # 初始化最大公约数为第一个景点的绝对值 result = abs(x[0]) # 遍历所有景点,更新最大公约数 for i in range(1, n): result = gcd(result, abs(x[i])) # 输出结果 print(result) ``` 代码解释 1. `gcd` 函数:用于计算两个数的最大公约数,使用欧几里得算法。 2. 输入读取:首先读取景点的数量 `n`,然后读取 `n` 个景点的坐标,并存储在列表 `x` 中。 3. 初始化最大公约数:将最大公约数 `result` 初始化为第一个景点的绝对值。 4. 遍历所有景点:从第二个景点开始,依次计算当前 `result` 和当前景点绝对值的最大公约数,并更新 `result`。 5. 输出结果:最后输出最大公约数 `result`。 复杂度分析 - 时间复杂度:$O(n log m)$,其中 $n$ 是景点的数量,$m$ 是景点坐标的最大值。 - 空间复杂度:$O(n)$,主要用于存储景点坐标。 [2026-01-24 13:15:21 | AI问答 | 443点数解答]

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