Why Modulo $1e9+7$
一直很好奇很多编程问题,比如求大数阶乘,大数的排列组合等,要求将输出结果对$ 1e9+7 $(=1000000007)取模。为什么是这样一个数呢?今天一查,网上还是有不少讨论的。总结一下有下面几个原因。
- 首先因为$ 1e9+7 $是一个质数
- 其次是$ 1e9+7 $对于int32来说足够大
- 还有就是$ 1e9+7 $的平方对于int64来说也恰好不会溢出
一直很好奇很多编程问题,比如求大数阶乘,大数的排列组合等,要求将输出结果对$ 1e9+7 $(=1000000007)取模。为什么是这样一个数呢?今天一查,网上还是有不少讨论的。总结一下有下面几个原因。