关于c++ mod的性质的一些总结

所谓mod,也就是取余,在c++中用’%‘表示,是非常常见的一种对数据的处理方式,通俗的说,a mod b 等于a除以b的余数(当然了,b不能等于0),a、b都得为整数。下面,介绍一些它的性质。

  1. 模同余

所谓模同余,就是两个数对同一个数取模,如果结果相同,则称他们模同余。

a和b对c模同余的条件:
(a-b)%c==0;
  1. 加法取模的伪分配律

简单来说,就是:

(x+y)%z==(x%z+y%z)%z
 证明:
x可看成a*z+b,y可看成c*z+d
那么,(x+y)%z => (a*z+b+c*z+d)%z => ((a+c)*z+(b+d))%z 
根据取模的定义,(a+c)%z 可以消掉,而b=x%z,d=y%z,故((a+c)*z+(b+d))%z = (x%z+y%z)%z
故(x+y)%z==(x%z+y%z)%z
  1. 乘法取模的伪分配律
(x*y)%z==(x%z*y%z)%z
证明方法同上
所谓mod,也就是取余,在c++中用’%‘表示,是非常常见的一种对数据的处理方式,通俗的说,a mod b 等于a除以b的余数(当然了,b不能等于0),a、b都得为整数。下面,介绍一些它的性质。 模同余 所谓模同余,就是两个数对同一个数取模,如果结果相同,则称他们模同余。 a和b对c模同余的条件: (a-b)%c==0; 加法取模的伪分配律 简单来说,就是: (x+y)%z==(x%z+y%z)%z 证明: x可看成a*z+b,y可看成c*z+d 那么,(x+y)%z => (a*z+b+c*z+d)%z => ((a+c)*z+(b+d))%z 根据取模的定义,(a+c)%z 可以消掉,而b=x%z,d=y%z,故((a+c)*z+(b+d))%z = (x%z+y%z)%z 故(x+y)%z==(x%z+y%z)%z 乘法取模的伪分配律 (x*y)%z==(x%z*y%z)%z 证明方法同上
经验分享 程序员 微信小程序 职场和发展