1、mod运算的性质
结合律
((a+b) mod p + c)mod p = (a + (b+c) mod p) mod p
((a*b) mod p * c)mod p = (a * (b*c) mod p) mod p
交换律
(a + b) mod p = (b+a) mod p
(a × b) mod p = (b × a) mod p
分配律
((a +b)mod p × c) mod p = ((a × c) mod p + (b × c) mod p) mod p
(a×b) mod c=(a mod c * b mod c) mod c
(a+b) mod c=(a mod c+ b mod c) mod c
(a-b) mod c=(a mod c- b mod c) mod c
mod运算通俗说是求余。a对b求余的结果余数一定小于b。所以上面的一些定律你就会明白为什么要多加mod符号,就是因为只要外层有一个mod,展开时也必须保证整体的结果小于模数。
2.mod运算的应用
例一:判断能否整除
i%n==0,那么i能够被n整除。
关于整除,详解一下我们之前判断被n整除的方法的由来。
被2整除:
判断方法:偶数
被3整除:
判断方法:i的每位和能够整除3
被6整除:
判断方法:先判断能被2整除,再判断能否被3整除
被8整除:
判断方法:判断后三位是否能够整除8
证明方法如下:
看来以前的数学公式或者规则都很有用,当论证过后能够记得更清吧。
第二个应用:
在博弈论中也有所应用,如甲乙两个人玩游戏,共有14个棋子,谁最后取完谁赢。每次只可取1-3个棋子,不可不取。那么如果甲先取,该如何取才能够必胜?
其实博弈论一定要想好终态,也即最后是怎样赢的。所以这套赢的规律你要清楚,如本题答案:
甲第一把:14%4=2
之后若乙取x,那么甲取4-x。如此能够保证甲必胜。
总的来说,mod运算其实也并没有专属的算法。mod运算只是一个运算,上面所说的两个例子是mod运算的两个应用。