|
@@ -84,6 +84,30 @@ $1 \leq n \leq 5 \cdot 10^5$,$2 \leq a_i \leq 10^7$。
|
|
|
|
|
|
太难了啊,不会啊 QAQ。
|
|
|
|
|
|
+问了群里的 dalao 们,他们说了一个结论:如果 $a_i$ 是某个素数的幂,则无解,
|
|
|
+否则一定能找到 $u$ 和 $v$ 满足 $uv = a_i$,且 $u \perp v$,
|
|
|
+$(u, v)$ 就是合法的解。简要证明如下:
|
|
|
+
|
|
|
+首先对于素数的幂 $p^j$,无论怎么取 $d_1$ 和 $d_2$,
|
|
|
+既然要取一个因子,结果仍然是 $p$ 的幂,即 $p^{k_1}$ 和 $p^{k_2}$。
|
|
|
+由于题目要求 $d_1 > 1$,$d_2 > 1$,有 $k_1 > 0$,$k_2 > 0$。
|
|
|
+故 $gcd(d_1, d_2) = gcd(p^{k_1}, p^{k_2}) = p^{\min(k_1, k_2)} \geq p^1 = p > 1$。因此无解。
|
|
|
+
|
|
|
+然后证明如果 $uv = a_i$,且 $u \perp v$,则 $(u, v)$ 对于 $a_i$ 是合法的解。
|
|
|
+我们有 $(u + v) \mod u = 0 + v \mod u = v \mod u \neq 0$,
|
|
|
+$(u + v) \mod v = u \mod v + 0 = u \mod v \neq 0$。
|
|
|
+根据中国剩余定理,因为 $u \perp v$,可得 $(u + v) \mod (uv) =
|
|
|
+(u + v) \mod a_i \neq 0$。这就满足了题目的要求。
|
|
|
+
|
|
|
+最后对于所有不是素数幂的 $a_i$ 构造出 $u$ 和 $v$ 即可,最简单的方法是,
|
|
|
+取出 $a_i$ 的最小素因子 $p$,它在 $a_i$ 中出现 $k$ 次,就使得
|
|
|
+$u = p^k$,$v = a_i / u$ 即可满足要求。
|
|
|
+
|
|
|
+可以用筛法预处理最小素因子,这样做时间复杂度就是
|
|
|
+$\mathcal{O}(\max\\{a_i\\} \log \log \max\\{a_i\\} + \sum \log a_i)$。
|
|
|
+
|
|
|
+[代码](https://codeforces.com/contest/1366/submission/83574965)
|
|
|
+
|
|
|
## [E. Two Arrays](https://codeforces.com/contest/1366/problem/E)
|
|
|
|
|
|
### 问题重述
|
|
@@ -99,7 +123,7 @@ $|a|, |b| \leq 2 \cdot 10^5$,保证 $b$ 严格单调上升。
|
|
|
可以选区间 $[l_i, r_i)$ 中的任意位置。
|
|
|
其中 $l_i$ 是 $a$ 中最后一个小于 $b_i$ 的数的位置,
|
|
|
$r_i$ 是 $a$ 中最后一个等于 $b_i$ 的数的位置。
|
|
|
-由于 $b_i$ 的单调性,这些区间不相交。
|
|
|
+由于 $b_i$ 的单调性,这些区间两两不相交。
|
|
|
所以直接用乘法原理,得到答案就是
|
|
|
$$\prod_{i} (r_i - l_i)$$
|
|
|
|