Обратное число к а по модулю m
📁 python, пример
Обратное число Даны два целых числа m и a. Если не существует обратного числа к a по модулю m, то выведите число −1, а если существует, то выведите это число (ответ должен лежать в границах от 0 до m−1).
Входные данные В единственной строке входных данных даны два целых числа 1
Выходные данные Выведите ответ на задачу.
Примеры Ввод 179 57 Вывод 22
b = 0 a = list(map(int, input().split())) b = pow(a[1], a[0] - 2, a[0]) if pow(a[1], a[0] - 2, a[0]) == 0: print(-1) else: print(b) Решение с использованием расширенного алгоритма Евклида. Способ через степень требует вычисления функции Эйлера.
Edit: По подсказке @Eduard убрал дополнительные действия для получения положительного результата (x может быть отрицательным после работы алгоритма Евклида), которые не требуются в Python
def gcdExtended(a, b): if a == 0 : retu b,0,1 gcd,x1,y1 = gcdExtended(b%a, a) x = y1 - (b//a) * x1 y = x1 retu gcd,x,ym, a = map(int, input().split())gcd, x, y = gcdExtended(a, m)if gcd == 1: print(x % m) #print((x % m + m) % m) # нужно в некоторых других языках для получения положительного решенияelse: print(-1) Войдите чтобы оставить ответ
Блоги