为什么取模
阶乘、累乘很快就超过 long long 的上限。每一步都取模,数值始终被压在 0 到 1e9+6 之间,不会溢出,且不影响最终模意义下的答案。
累乘取模模板
const long long MOD = 1000000007; long long res = 1; for (int x : a) res = res * x % MOD; 每步取模,稳。
C++ 机试动画
本课导读
当答案非常大时,题目通常要求对 1000000007 取模。这一课讲为什么取模、怎么在累乘里每步取模防溢出。
阶乘、累乘很快就超过 long long 的上限。每一步都取模,数值始终被压在 0 到 1e9+6 之间,不会溢出,且不影响最终模意义下的答案。
const long long MOD = 1000000007; long long res = 1; for (int x : a) res = res * x % MOD; 每步取模,稳。
把 C++ 做题手感练出来
这套课只讲机试最常用的 C++:输入输出、类型、数组、字符串和 STL。先把这些模板练熟,再去刷数据结构和算法题,效率会高很多。