[英]what is the significance of modulo 10^9+7 used in codechef and spoj problems?
我正在研究一个问题 ,需要输出为“每行输出答案模10 ^ 9 + 7”。 为什么modulo 10 ^ 9 + 7包含在问题中? 它的意义是什么?
我不是在寻找问题的解决方案; 只有那个特定常数的意义。
问题要求结果模数,因为替代方案,即要求浮点结果给出“高位”并要求整个结果,并不总是问题设定者正在寻找的。
10 ^ 9 + 7结束是一个非常好的选择。 这是一个“安全的黄金”。 那意味着什么:
10 ^ 9 + 7是素数。 这意味着“中国剩余技巧”不适用; 如果你试图用两个质数的模数来模拟一些东西,比如pq,那么你可以用模p和模q来计算它,并使用扩展的欧几里德算法把它们放在一起。
不仅如此,10 ^ 9 + 6,即10 ^ 9 + 7-1,是素数的两倍。 因此乘法模10 ^ 9 + 7的模数不会分解成小的东西,因此在那里没有类似中文余数的技巧。
在一些问题中答案是非常大的数字,但强迫你实施长的arighmetics不是问题作者的目的。 因此,他们要求你计算一些数字的答案,如1000000007
,所以你不必实现长算术,但答案仍然是可验证的。
如果要求以模10 ^ 9的方式给出答案,你可以轻松掩盖这些位,但是为了使问题变得更加困难,选择10 ^ 9 + 7这样的数字
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.