reverse modulus

reverse - Operador de módulo inverso



modulus (5)

Más de 3 años después de hacer la pregunta encontré la solución. Lo he incluido como answer .

Tengo una expresión con módulo que se debe poner en términos de x.

(a + x) mod m = b

No puedo averiguar qué hacer con el módulo. ¿Hay una manera de obtener x por sí misma, o estoy fuera de suerte en este caso?

Edit : Me doy cuenta de que puedo obtener múltiples respuestas, pero estoy buscando una respuesta que esté dentro del rango de m.


Definitivamente no se puede averiguar x, pero podemos ir un poco más lejos dada la definición del operador.

x mod y = z if x = ny + z for some integer n, where 0 <= z < y

Así que en tu caso:

(a + x) mod m = b a + x = nm + b x = nm + b - a for some integer n


Estaba revisando esta pregunta y me di cuenta de que es posible basarse en la respuesta que dio @Gorcha.

(a + x) mod m = b a + x = nm + b x = nm + b - a for some integer n

No sé por qué no me había dado cuenta antes, pero la solución se puede derivar estableciendo n en 0.

La respuesta a mi pregunta parece ser x = b - a , aunque en el ejemplo (26 + x) mod 29 = 3 el resultado es -23, que es menor que m. Para volver a -23 en el rango esperado mod con 29, lo que da 6. Aunque no se especifica en la pregunta, esto da un valor entre 0 y m.

La solución final se convierte entonces en: x = (b - a) mod m

ES DECIR

(26 + x) mod 29 = 3 x = (3 - 26) mod 29 x = -23 mod 29 x = 6

Lo que pone a x en el rango de 0 a m. La comprobación mostrará (26 + 6) mod 29 = 3 .


La parte difícil de esta ecuación es que, incluso si conoces a, m y b, no puedes deducir de manera concluyente x.

Por ejemplo, digamos que tu ecuación era:

(2 + x) % 4 = 3

x podría ser 1, 5, 9, 13 etc.

Esto significa que estás fuera de suerte, no hay forma de obtener x por sí sola.


Sí. estás jodido.

ejemplo:

5 mod 3 = 2 8 mod 3 = 2

¿Así que el mod 2 inverso es qué? 8 o 5? o 11? ¿O una infinidad de otros números?

El modo inverso es una relación, empiezas a llegar a matemáticas más difíciles si intentas perseguir esto. Si estás en haskell, podrías fácilmente modelarlo sin determinismo (una lista infinita de posibles respuestas)

Además, esta no es realmente una pregunta de programación. Echa un vistazo a intercambio de matemáticas.


Tengo esta ecuación para revertir el módulo si tenemos

(var1 +var2) mod num=Res

entonces para obtener

var1= num-((Res-var2)*-1)

por ejemplo, 25+5mod26=4

var1=26-((4-5)*-1) var1=26-1 var1=5