我一直在尝试竞技编程,已经看到很多次出现了这个语句:
对109 + 7 取模后输出结果
现在我可以理解这是一种在处理超大数时避免数字溢出的方法。但它是如何以及为什么起作用的?如果有人能解释一下背后的数学原理,我会很感激。
我一直在尝试竞技编程,已经看到很多次出现了这个语句:
对109 + 7 取模后输出结果
现在我可以理解这是一种在处理超大数时避免数字溢出的方法。但它是如何以及为什么起作用的?如果有人能解释一下背后的数学原理,我会很感激。
#include <stdio.h>
int main() {
puts("0");
}
这是因为10,000!至少是5,000个偶数的乘积,所以它的因子之一是25,000。因此,如果你只想要模232或264的答案,实际上根本不需要计算它。你可以说结果是0 mod 232或264。(a+b) modulo M
变得容易,因为 2M 仍然适合于 int
,因此可以保证 (a+b)
不会溢出。否则,我们必须像 ((long long)(a) + b) % M
一样明确地强制转换,或将 a 和 b 声明为 long long
。由于几乎每个问题都涉及加法,这将使 int
几乎无法使用。 - Madhuchhanda Mandal