为什么要对1000000007取模(取余)
大数阶乘,大数的排列组合等,一般都要求将输出结果对1000000007取模(取余)
也许你会问:
为什么总是1000000007呢???
大概≖‿≖✧是因为:
1. 1000000007是一个质数(素数),对质数取余能最大程度避免冲突~
2. int32位的最大值为2147483647,所以对于int32位来说1000000007足够大
3. int64位的最大值为2^63-1,对于1000000007来说它的平方不会在int64中溢出
所以在大数相乘的时候,因为(a∗b)%c=((a%c)∗(b%c))%c
,所以相乘时两边都对1000000007取模,再保存在int64里面不会溢出
\color{MediumTurquoise}{。◕‿◕。}
还有,在fft里面,10^9+7的原根是3
Orz
嗯
虽然我听不懂哈哈哈,笑死,兄弟虽然这个词用的好
az
第一是NTT,第二998244353的原根才是3
啊啊啊,写错了
额
不过好像10^9+7的原根也是3把
别问我,我听不懂1e9 + 7原根是5
e,谢谢
长知识了
hh