我知道(a / b)mod M = ab ^ -1 mod M
并且当M是素数时,则b ^ -1 = b ^(M-2)
我必须计算(121/2)mod M,其中M = 1000000007(1e9 + 7)
使用简单划分:(121/2)modM =(60)mod M = 60%M = 60
使用模块化反向 :( 121/2)mod M =((121 mod M)*(2 ^(M-2)mod M))mod M.
2 ^(M-2)mod M这里是500000004(链接:http://www.cs.princeton.edu/~dsri/modular-inversion-answer.php?n=2&p=1000000007)
所以上面的表达式变为(121 mod M * 500000004)mod M = 60500000484 mod M = 500000064
我可能做错了什么?
答案 0 :(得分:3)
您不能执行整数除法并期望得到相同的结果。你的计算应该是:
> SELECT 0 IN (123, 'abc', 'def');
+--------------------------+
| 0 IN (123, 'abc', 'def') |
+--------------------------+
| 1 |
+--------------------------+
而不是
121/2 (mod M) = 60 + 1/2 (mod M) = 60 + 50000004 = (mod M) = 50000064
由于121/2 (mod M) = 60 (mod M)
函数没有定义从有理数floor
到组Z_n(仅将有理数定义为自然数,Q
),因此您应该像对待理性那样处理Z_n中的分歧,即使用剩余部分。