Avatar ·

Обратное число к а по модулю 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)
Avatar ·

Решение с использованием расширенного алгоритма Евклида. Способ через степень требует вычисления функции Эйлера.

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)

Войдите чтобы оставить ответ

Блоги