我正在研究a problem,需要输出为"对于每一行输出,答案模数为10 ^ 9 + 7"。为什么模10 ^ 9 + 7 包含在问题中?它的意义是什么?
我没有找到问题的解决方案;只有那个特定常数的重要性。
答案 0 :(得分:16)
问题要求结果模数素数因为替代方法,即要求浮点结果给出“高位”并询问整个结果,并不总是问题设定者正在寻找的。
10 ^ 9 + 7结束是一个非常好的选择。这是一个“安全的黄金”。这意味着什么:
10 ^ 9 + 7是素数。这意味着“中国剩余技巧”不适用;如果你试图用两个质数的模数来模拟某些东西,比如pq,那么你可以用模p和模q来计算它,并使用扩展的欧几里德算法将各个部分放在一起。
不仅如此,10 ^ 9 + 6,即10 ^ 9 + 7-1,是素数的两倍。因此乘法模10 ^ 9 + 7的模数不会分解成小的东西,因此在那里没有类似中文的余数技巧。
答案 1 :(得分:2)
在某些问题中,答案是非常大数字,但强迫你实施长期的arighmetics并不是问题作者的目的。因此,他们要求你计算一些数字的答案,比如1000000007
,所以你不必实施长算术,但答案仍然是可以验证的。
答案 2 :(得分:0)
如果要求以模10 ^ 9的方式给出答案,你可以轻松掩盖这些位,但是为了使问题变得更加困难,选择10 ^ 9 + 7这样的数字