Ваша задача - дать два целых числа a
и b
вычислить модульную мультипликативную инверсию по модулю b, если она существует.
Модульная обратная по a
модулю b
это число c
такое, что ac ≡ 1 (mod b)
. Это число является уникальным по модулю b
для любой пары a
и b
. Он существует, только если наибольшим общим делителем a
и b
является 1
.
Страницу Wikipedia для модульного мультипликативного обратного можно обратиться , если вам необходима дополнительная информация о теме.
Вход и выход
Входные данные задаются либо двумя целыми числами, либо списком из двух целых чисел. Ваша программа должна выводить либо одно число, либо модульную мультипликативную инверсию, которая находится в интервале 0 < c < b
, либо значение, указывающее, что инверсии нет. Значение может быть любым, кроме числа в диапазоне (0,b)
, а также может быть исключением. Однако значение должно быть одинаковым для случаев, когда нет обратного.
0 < a < b
можно предположить
правила
- Программа должна завершиться в какой-то момент и решить каждый контрольный пример менее чем за 60 секунд.
- Применяются стандартные лазейки
Контрольные примеры
Тестовые случаи ниже приведены в формате, a, b -> output
1, 2 -> 1
3, 6 -> Does not exist
7, 87 -> 25
25, 87 -> 7
2, 91 -> 46
13, 91 -> Does not exist
19, 1212393831 -> 701912218
31, 73714876143 -> 45180085378
3, 73714876143 -> Does not exist
счет
Это кодовый гольф, поэтому выигрывает самый короткий код для каждого языка.
Это и это схожие вопросы, но оба задают конкретные ситуации.