2014-10-10 3 views
2

Например:Как отменить операцию% в питона

x = (y*6) % 26 #this is a consistent formula 
18 = (y*6) % 26 

Как бы решить для у? Или есть способ легко изменить операцию%?

+4

Существует не легкий путь. Существует несколько решений для 'y'. –

+0

http://rosettacode.org/wiki/Modular_inverse#Python Если это помогает. – karthikr

+0

Как бы я решил для y? Я не знаю, как обрабатывать переменное движение, когда участвует%. – sudobangbang

ответ

0

Нет точного способа повернуть вспять операцию, так как вы потеряли информацию, так как% дает вам остаток, когда разделяются два числа.

Это как сказать, что если я делю х на 6, я получаю целое число и остаток от 3. Я не могу сказать, что такое X - это может быть 9, это может быть 15 или любое из бесконечного числа возможностей , Для его работы вам понадобится целое число, а также модуль.

Почему вы пытаетесь это сделать - возможно, мы сможем помочь, если вы расскажете нам больше о проблеме, которую пытаетесь решить.

4

Вы не можете реально изменить арифметику по модулю. Арифметика Modulo возвращает в основном группы эквивалентности. Подумайте о календаре ...

календарей (и часы) являются модами 12.

3 месяца после октября в январе, то есть (10 + 3)% 12 == 1
15 месяцев после октября в январе , то есть (10 + 15)% 12 == 1
и т.д ...

поэтому ваш вопрос, кажется, спросить, если вы можете сказать, в каком году это, зная, что календарный месяц это, и это, конечно, невозможно

+0

Это идеальная аналогия! Любить это! –

0

18 = (у * 6)% 26

означает, что

у * 6 = п * 26 + 18, где п может быть любое целое значение. Так

у = п * 26/6 + 3

или

у = п * 13/3 + 3

Теперь вы можете сказать, что у представляет собой целое число, тоже. Это происходит только для

у = п * 13 + 3

так, у = 3, 16, 29, 42, ...

Смежные вопросы