【发布时间】:2017-12-26 23:43:48
【问题描述】:
long long x;
for (int i = 1; i <= n; i++) {
x = (x * i) % m;
}
cout << x;
这是计算 (n!) mod m 的技巧(假设 m > n)。但是,我不知道为什么这是真的。你能解释一下这背后的数学机制吗?
【问题讨论】:
-
这个问题应该移到math.stackexchange.com
-
@hvd 比它应该被关闭 ;-)
-
没有。在这种情况下,m 应该大于 n。
-
这里没有技巧,一切都很简单。你觉得哪一部分有技巧?
-
如果您想要一个简短的答案,这里有一个证明,如果您在 google 上输入“模算术属性”,我很确定您可以找到它