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 自动生成**