繁体   English   中英

在codechef和spoj问题中使用modulo 10 ^ 9 + 7的意义是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM