El operador de módulo es como el operador de mod cuando el número es positivo, pero diferente si el número es negativo.
Muchas veces en los problemas se nos pide que demos la respuesta modulo 10^9 + 7.
Deje que la respuesta (antes de usar el módulo) se denote por 'a'.
simple Sencillo REGLA
si a es positivo, a continuación, un módulo 10^9 + 7 = un% (10^9 + 7)
si a es negativo, a continuación, un módulo 10^9 + 7 = (un% (10^9 + 7)) + (10^9 + 7)
Si, en suc h problemas, encontramos que cualquier paso del ciclo puede calcular un valor que está fuera del rango entero (si estamos usando números enteros), entonces podemos usar el operador de módulo en ese paso en sí mismo. La respuesta final será como si hubiéramos usado el operador de módulo solo una vez.
Esto es porque- (a * b)% c = ((a% c) (b% c))% c Lo mismo ocurre con la suma y la resta.
Posible duplicado de http://stackoverflow.com/questions/4003232/how-to-code-a-modulo-operator-in-cc-obj-c-that-handles-negative-numbers – james
posible duplicado de [ Operador de módulo con valores negativos] (http://stackoverflow.com/questions/7594508/modulo-operator-with-negative-values) – sugavaneshb