Китайская теорема об остатках может быть весьма полезным в модульной арифметике.
Например, рассмотрим следующий набор конгруэнтных отношений:
Для множеств конгруэнции отношений , как это, где все основания ( 3, 5, 7
в данном примере) являются совместно простым друг с другом, там будет одно и только одно целым числом n
между 1
и продукт оснований ( 3*5*7 = 105
в этом примере) включительно , которая удовлетворяет соотношения ,
В этом примере число будет 14
сгенерировано по следующей формуле:
где 2, 4, and 0
приведены из приведенного выше примера.
70, 21, 15
являются коэффициенты формулы и они зависят от оснований, 3, 5, 7
.
Для вычисления коэффициентов формулы ( 70, 21, 15
в нашем примере) для набора базисов мы используем следующую процедуру.
Для каждого номера a
в наборе основ:
- Найдите произведение всех других основ, обозначенных как
P
. - Найдите первое кратное,
P
которое оставляет остаток от1
деления наa
. Это коэффициентa
.
Например, чтобы вычислить коэффициент, который соответствует основанию 3
, мы находим произведение всех других оснований (то есть 5*7 = 35
), а затем находим первое кратное этого произведения, которое оставляет остаток от 1
деления на основание.
В этом случае 35
оставляет остаток от 2
деления на 3
, но 35*2 = 70
оставляет остаток от 1
деления на 3
, 70
как и соответствующий коэффициент для 3
. Точно так же 3*7 = 21
оставляет остаток от 1
деления на 5
и 3*5 = 15
оставляет остаток от 1
деления на 7
.
В двух словах
Для каждого номера a
в наборе номеров:
- Найдите произведение всех других чисел, обозначенных как
P
. - Найдите первое кратное,
P
которое оставляет остаток от1
деления наa
. Это коэффициентa
.
Соревнование
- Задача состоит в том, чтобы для набора из двух или более баз найти набор соответствующих коэффициентов.
- Множество оснований, как гарантируют, будут попарно взаимно простыми, и каждое основание, как гарантируют, будет больше чем 1.
- Ваши входные данные представляют собой список целых чисел в виде
[3,4,5]
строки ввода или строки, разделенных пробелами,"3 4 5"
или же ваши входные данные работают. - Ваш вывод должен быть либо списком целых чисел, либо строкой через пробел, которая обозначает набор коэффициентов.
Контрольные примеры
input output
[3,5,7] [70,21,15]
[2,3,5] [15,10,6]
[3,4,5] [40,45,36]
[3,4] [4,9]
[2,3,5,7] [105,70,126,120]
[40,27,11] [9801,7480,6480]
[100,27,31] [61101,49600,56700]
[16,27,25,49,11] [363825,2371600,2794176,5583600,529200]
Большое спасибо Leaky Nun за помощь в написании этой задачи. Как всегда, если проблема неясна, пожалуйста, дайте мне знать. Удачи и хорошего гольфа!