Mail.Ru Cup 2018 Round 2 Problem C Lucky Days

设在第 \(x\) 天二人都 lucky,则有 \(\DeclareMathOperator{\lcm}{lcm}\)
$ x = y_a t_a + R_a \( \) x= y_b t_ b + R_b$

约束条件:
$ l_a \le R_a \le r_a\(,\)l_b \le R_b \le r_b\( \) y_a, y_b \ge 0$

写成同余方程组

\begin{cases}
x \equiv R_a \pmod{t_a} \\
x \equiv R_b \pmod{t_b}
\end{cases}

\(x_0\) 是上述同余方程组的一个特解,则其通解可表为 \(x = x_0 + k\lcm(t_a, t_b)\)\(k\in\mathbb Z\)

容易证明,同余方程组

\begin{cases}
x \equiv r_1 \pmod{m_1} \\
x \equiv r_2 \pmod{m_2}
\end{cases}
有解的充要条件是 \(\gcd(m_1,m_2) \mid (r_1 - r2)\),此充要条件亦可写成 \(r_2 = r_1 + k \gcd(m_1,m_2), k\in\mathbb Z\),或者写成 \(r_1 \equiv r_2 \pmod{\gcd(m_1,m_2)}\)

解法:二分答案。
实现:http://codeforces.com/contest/1055/submission/45569689

总结

求解形如
\begin{equation}
\begin{cases}
x \equiv a_1 \pmod{m_1} \\
x \equiv a_2 \pmod{m_2} \\
\vdots \\
x \equiv a_n \pmod{m_n}
\end{cases} \label{E:0}
\end{equation}
的同余方程组。

考虑两个方程构成的同余方程组
\begin{equation}
\begin{cases}
x \equiv a_1 \pmod{m_1} \\
x \equiv a_2 \pmod{m_2}
\end{cases}\label{E:1}
\end{equation}

\begin{equation}
\begin{cases}
x = m_1 s + a_1 \\
x = m_2 t + a_2
\end{cases}\label{E:2}
\end{equation}
\(s, t\) 满足方程
\begin{equation}
m_1 s + a_1 = m_2 t + a_2 \label{E:3}
\end{equation}
根据裴蜀定理,\eqref{E:3} 有解的充要条件是 \(\gcd(m_1,m_2)\mid (a_1 - a_2)\) 。以下假设此条件成立,并令 \(d = \gcd(m_1,m_2)\) 。\eqref{E:3} 亦可写成
\begin{equation}
m_1 s = m_2 t + (a_2 - a_1) \label{E:4}
\end{equation}
方程 \eqref{E:4} 等价于
\begin{equation}
m_1 s \equiv a_2 - a_1 \pmod{m_2}\label{E:5}
\end{equation}
注意:一个不定方程等价于一个同余方程。要熟悉这两种形式的相互转化。
方程 \eqref{E:5} 又等价于
\begin{equation}
\frac{m_1}{d} s \equiv \frac{a_2 - a_1}{d} \pmod{ \frac{m_2}{d} } \label{E:6}
\end{equation}
解得
\begin{equation*}
s \equiv \left(\frac{m_1}{d}\right)^{-1}\frac{a_2 - a_1}{d} \pmod{ \frac{m_2}{d} } \label{E:7}
\end{equation*}
其中 \(\left(\frac{m_1}{d}\right)^{-1}\) 表示 \(\frac{m_1}{d}\) 在模 $ \frac{m_2}{d} $ 下的逆元,可用扩展欧几里得算法求得。令 $ b = \left(\frac{m_1}{d}\right)^{-1}\frac{a_2 - a_1}{d} $,有
\begin{equation}
s = k \frac{m_2}{d} + b \label{E:8}
\end{equation}
将 \eqref{E:8} 代入 \eqref{E:2},得
\begin{equation}
x = k \frac{m_1m_2}{d} + m_1 b + a_1 \label{E:9}
\end{equation}

\begin{equation}
x \equiv m_1 b + a_1 \pmod{ \frac{m_1 m_2}{d}} \label{E:10}
\end{equation}
至此,我们将同余方程组 \eqref{E:1} 化成了等价(同解)的同余方程 \eqref{E:10} 。

我们证明了

若 \eqref{E:1} 有解,则其在模 \(\lcm(m_1,m_2)\) 下有唯一解 $x_0 $。

故可用 \(x \equiv x_0 \pmod{\lcm(m_1,m_2)}\) 取代 \eqref{E:0} 中的前两个方程,不断如此操作,最后将得到 \(x \equiv a \pmod{\lcm(a_1, a_2, \dots, a_m)}\),这样就得到了 \eqref{E:0} 的通解,也意味着

若 \eqref{E:0} 有解,则其在模 \(\lcm(m_1,m_2, \dots, m_n)\) 下有唯一解。

后记

Miskcoo 的文章 从 \eqref{E:3} 的特解和通解入手证明了 \eqref{E:2} 在模 \(\lcm(m_1,m_2)\) 下有唯一解,其思路更为简洁。

用扩展 Euclid 算法求出 \eqref{E:3} 的特解 \(s',t'\),即可得到 \eqref{E:2} 的特解 \(x_0 = s'm_1 + a_1\),然后用 \(x \equiv x_0 \pmod{\lcm(m_1, m_2)}\) 替换 \eqref{E:0} 中的前两个方程。

Reference

https://blog.csdn.net/qq_29980371/article/details/71053219

http://blog.miskcoo.com/2014/09/chinese-remainder-theorem

posted @ 2018-11-12 01:06  Pat  阅读(362)  评论(0编辑  收藏  举报