Заранее извиняюсь, если напутал что-нибудь с терминологией, старался как мог.
Имеется набор остатков от деления числа
![$x$ $x$](https://dxdy-04.korotkov.co.uk/f/3/3/2/332cc365a4987aacce0ead01b8bdcc0b82.png)
на различные числа
![$a_i$ $a_i$](https://dxdy-03.korotkov.co.uk/f/6/5/e/65ed4b231dcf18a70bae40e50d48c9c082.png)
![$
\begin{cases}
r_1 = x\mod a_1\\
r_2 = x\mod a_2\\
...\\
r_i = x\mod a_n
\end{cases}
$ $
\begin{cases}
r_1 = x\mod a_1\\
r_2 = x\mod a_2\\
...\\
r_i = x\mod a_n
\end{cases}
$](https://dxdy-03.korotkov.co.uk/f/6/b/1/6b138a4e79530cc9326700e48248d89182.png)
причем многие числа
![$a_i$ $a_i$](https://dxdy-03.korotkov.co.uk/f/6/5/e/65ed4b231dcf18a70bae40e50d48c9c082.png)
и
не взаимно простые (
![$ \verb НОД (a_i, a_j) > 1$ $ \verb НОД (a_i, a_j) > 1$](https://dxdy-04.korotkov.co.uk/f/7/4/f/74f2bcc6eb987da748af038fbe44963782.png)
)
Требуется восстановить число
![$x$ $x$](https://dxdy-04.korotkov.co.uk/f/3/3/2/332cc365a4987aacce0ead01b8bdcc0b82.png)
по набору
![$(r_1,r_2, ..., r_n)$ $(r_1,r_2, ..., r_n)$](https://dxdy-03.korotkov.co.uk/f/a/0/3/a03982bc20089affa635538a7b63e89882.png)
- нужен алгоритм
Если бы любые 2 числа
![$a_i$ $a_i$](https://dxdy-03.korotkov.co.uk/f/6/5/e/65ed4b231dcf18a70bae40e50d48c9c082.png)
и
![$a_j$ $a_j$](https://dxdy-04.korotkov.co.uk/f/3/f/d/3fd897df5707a411645a54460183e3cd82.png)
были бы попарно взаимно простыми - мы имели бы дело с широко известной Китайской теоремой об остатках и могли использовать предложенный в ней алгоритм восстановления числа
![$x$ $x$](https://dxdy-04.korotkov.co.uk/f/3/3/2/332cc365a4987aacce0ead01b8bdcc0b82.png)
.
К сожалению, этот алгоритм не подходит для нашего случая, т.к. использует обратные числа по модулю, вида
![$a_i^{-1} \mod a_j$ $a_i^{-1} \mod a_j$](https://dxdy-03.korotkov.co.uk/f/6/7/2/6728d5145cc3b79a742b8e21fc2ef5b682.png)
, которые не существуют, если
![$a_i$ $a_i$](https://dxdy-03.korotkov.co.uk/f/6/5/e/65ed4b231dcf18a70bae40e50d48c9c082.png)
и
![$a_j$ $a_j$](https://dxdy-04.korotkov.co.uk/f/3/f/d/3fd897df5707a411645a54460183e3cd82.png)
не взаимно простые, например:
![$6^{-1}\ (\mod 15)$ $6^{-1}\ (\mod 15)$](https://dxdy-02.korotkov.co.uk/f/5/2/5/525915f94047a63992629ecfbf44df5482.png)
Для упрощения можно считать что все
![$r_i \neq 0$ $r_i \neq 0$](https://dxdy-04.korotkov.co.uk/f/3/f/5/3f532611bc0a736bf596a3e85533404582.png)
- в этом случае, насколько я понимаю, число
![$x$ $x$](https://dxdy-04.korotkov.co.uk/f/3/3/2/332cc365a4987aacce0ead01b8bdcc0b82.png)
всегда существует и не нужно дополнительных проверок