AT_judge_update_202004_d Calculating GCD
题目描述
有一个长度为 $N$ 的整数序列 $A_1, A_2, \cdots, A_N$。给定 $Q$ 个大于 $1$ 的整数 $S_1, S_2, \cdots, S_Q$。对于每个整数 $S_i$,我们要解决以下问题:
- 设初始值为 $X = S_i$,然后依次对 $j = 1, 2, \cdots, N$ 执行操作:将 $X$ 替换为 $\gcd(X, A_j)$。如果某一次操作后 $X$ 的值变为 $1$,那么求出最小的这样的 $j$ 值;如果操作结束仍未达到 $1$,则输出最后的 $X$ 值。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $Q$ $A_1$ $A_2$ $\cdots$ $A_N$ $S_1$ $S_2$ $\cdots$ $S_Q$
输出格式
对于每一个 $S_i$,依次输出对应的答案。
说明/提示
- $1 \leq N, Q \leq 10^5$
- $1 \leq A_i \leq 10^9$
- $1 < S_i \leq 10^9$
注:两个正整数 $X$ 和 $Y$ 的最大公约数表示为 $\gcd(X, Y)$。在 C++ 中可以使用 std::gcd,在 Python 中使用 math.gcd。
### 示例解释
- 对于 $S_1 = 4$,经过 $4$ 次操作后,$X$ 依次变为 $2, 2, 2, 1$,即第 4 次操作后 $X$ 首次变为 $1$,结果为 $4$。
- 对于 $S_2 = 6$,经过 $4$ 次操作后,$X$ 变为 $6, 6, 6, 3$,始终不为 $1$,结果为 $3$。
- 对于 $S_3 = 3$,经过 $4$ 次操作后,$X$ 始终为 $3$,结果为 $3$。
**本翻译由 AI 自动生成**