1. 程式人生 > >Mail.Ru Cup 2018 Round 2 Problem C Lucky Days

Mail.Ru Cup 2018 Round 2 Problem C Lucky Days

設在第 $x$ 天二人都 lucky,則有 $\DeclareMathOperator{\lcm}{lcm}$
$ x = y_a t_a + l_a + R_a $
$ x= y_b t_ b + l_b + R_b$

令 $L_a = r_a - l_a + 1, L_b = r_b - l_b + 1$

約束條件:
$0 \le R_a < L_a$,$0\le R_b < L_b$
$ y_a, y_b \ge 0$

寫成同餘方程組

\begin{cases}
x \equiv l_a + R_a \pmod{t_a} \\
x \equiv l_b + 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 r_1 \pmod{m_1} \\
x \equiv r_2 \pmod{m_2}
\end{cases}\label{E:1}
\end{equation}

\begin{equation}
\begin{cases}
x = m_1 s + r_1 \\
x = m_2 t + r_2
\end{cases}\label{E:2}
\end{equation}
$s, t$ 滿足方程
\begin{equation}
m_1 s + r_1 = m_2 t + r_2 \label{E:3}
\end{equation}
根據裴蜀定理,\eqref{E:3} 有解的充要條件是 $\gcd(m_1,m_2)\mid (r_1 - r_2)$ 。以下假設此條件成立,並令 $d = \gcd(m_1,m_2)$ 。\eqref{E:3} 亦可寫成
\begin{equation}
m_1 s = m_2 t + (r_2 - r_1) \label{E:4}
\end{equation}
方程 \eqref{E:4} 等價於
\begin{equation}
m_1 s \equiv r_2 - r_1 \pmod{m_2}\label{E:5}
\end{equation}
注意:一個不定方程等價於一個同餘方程。要熟悉這兩種形式的相互轉化。
方程 \eqref{E:5} 又等價於
\begin{equation}
\frac{m_1}{d} s \equiv \frac{r_2 - r_1}{d} \pmod{ \frac{m_2}{d} } \label{E:6}
\end{equation}
解得
\begin{equation*}
s \equiv \left(\frac{m_1}{d}\right)^{-1}\frac{r_2 - r_1}{d} \pmod{ \frac{m_2}{d} }
\end{equation*}

\begin{equation}
s \equiv m_1^{-1} (r_2 - r_1) \pmod{ \frac{m_2}{d} } \label{E:7}
\end{equation}
其中 $m_1^{-1}$ 表示 $m_1$ 在模 $ \frac{m_2}{d} $ 下的逆元,可用擴充套件歐幾里得演算法

求得。令 $ r_3 = m_1^{-1} (r_2 - r_1) $,有
\begin{equation}
s = k \frac{m_2}{d} + r_3 \label{E:8}
\end{equation}
將 \eqref{E:8} 代入 \eqref{E:2},得
\begin{equation}
x = k \frac{m_1m_2}{d} + m_1 r_3 + r_1 \label{E:9}
\end{equation}

\begin{equation}
x \equiv m_1 r_3 + r_1 \pmod{ \frac{m_1 m_2}{d}} \label{E:10}
\end{equation}
至此,我們將同餘方程組 \eqref{E:1} 化成了等價(同解)的同餘方程 \eqref{E:10} 。

Reference

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