Description
题目链接:Codeforces 338D
有一张 $n\times m$ 的表格,第 $i$ 行第 $j$ 列的元素是 $\gcd(i,j)$。给定一个长度为 $k$ 的序列 $a_i$,询问是否存在 $x,y$,满足 $\forall i,1\le i\le k,\gcd(x,y+i-1)=a_i$(即这个序列在表格的某一行出现过)。
数据范围:$1\le n,m\le 10^{12}$,$1\le k\le 10^4$,$1\le a_i\le 10^{12}$
Solution
由于我们要保证 $\gcd(x,y)=a_i$,显然 $\operatorname{lcm}(a_1,a_2,\dots,a_k)\mid x$。
我们尝试证明:如果有解,那么 $x$ 的值可以为 $\operatorname{lcm}(a_1,a_2,\dots,a_k)$。
如果有解,且 $x=K\cdot\operatorname{lcm}(a_1,a_2,\dots,a_k)$,那么意味着 $\gcd(K,y)=0$,这样一来我们给 $y$ 平白无故地增加了限制。因此如果 $x=K\cdot\operatorname{lcm}(a_1,a_2,\dots,a_k)$ 时有解,那么在 $x=\operatorname{lcm}(a_1,a_2,\dots,a_k)$ 时一定也有解。
在确定了 $x$ 的值之后,还需要满足 $a_i\mid y+i-1$,即满足下列同余方程:
这个方程显然可以通过扩展中国剩余定理来求解 $y$ 即可。
但是我们发现,求出 $y$ 之后的解 $(x,y)$ 不一定就是合法的,这是为什么呢?
其实我们通过这样的思路,推导出解只满足必要性,而不满足充分性。因此我们还需要将 $(x,y)$ 代入 $\gcd(x,y+i-1)=a_i(1\le i\le k)$ 验证。
时间复杂度:$O(k\log a_i)$
Code
1 |
|