编程题
最大公约数 ### 问题描述 给定一个数组, 每次操作可以选择数组中任意两个相邻的元素 $x, y$ 并将其 中的一个元素替换为 $\operatorname{gcd}(x, y)$, 其中 $\operatorname{gcd}(x, y)$ 表示 $x$ 和 $y$ 的最大公约数。 请问最少需要多少次操作才能让整个数组只含 1 。 ### 输入格式 输入的第一行包含一个整数 $n$, 表示数组长度。 第二行包含 $n$ 个整数 $a_{1}, a_{2}, \cdots, a_{n}$, 相邻两个整数之间用一个空格分隔。 ### 输出格式 输出一行包含一个整数, 表示最少操作次数。如果无论怎么操作都无法满 足要求, 输出 $-1$ 。 ### 样例输入 ```text 3 4 6 9 ``` ### 样例输出 ```text 4 ``` ### 评测用例规模与约定 对于 $30 \\%$ 的评测用例, $n \leq 500, a_{i} \leq 1000$; 对于 $50 \\%$ 的评测用例, $n \leq 5000, a_{i} \leq 10^{6}$; 对于所有评测用例, $1 \leq n \leq 100000,1 \leq a_{i} \leq 10^{9}$ 。
查看答案
赣ICP备20007335号-2