5.18学习笔记

来源:互联网 发布:java初级题目 编辑:程序博客网 时间:2024/05/21 22:58

Summary

1.mod 取余操作

①例子: 100 mod 3=1 (100除以3余数是1)

                       5 mod 6=5 (5除以6余数是5)

②应用: 数论

例子:  2的N次方除以15的余数规律    2 mod 15=2

4 mod 15=4   8 mod 15=8   16 mod 15=1 

32 mod 15=2   64 mod 15=4  128 mod 15=8

256 mod 15=1   不难发现规律是2 4 8 1

这就是数论,比如32 mod 15=2

可以看做

  (((((((2 mod 15)*2) mod 15)*2)mod 15)*2)mod 15)*2)mod 15

=((((((2*2) mod 15)*2)mod 15)*2)mod 15)*2)mod 15

=(((((4 mod 15)*2)mod 15)*2)mod 15)*2)mod 15

=(((((4*2)mod 15)*2)mod 15)*2)mod 15

=((((8 mod 15)*2)mod 15)*2)mod 15

=(((8*2)mod 15)*2)mod 15

=((16 mod 15)*2)mod 15

=(1*2)mod 15

=2 mod 15

=2

结果是相同的(这也是解数学竞赛中数论的题目的有效途径)


2.xor异或操作

①原则:1 xor 1=0   0 xor 0=0  1 xor 0=1  0 xor 1=1

②运算:类似于加法,不同于加法

例子:

2 xor 4(十进制)=10 xor 100(二进制)=110(二进制)=6(十进制)

4 xor 5(十进制)=100 xor 101(二进制)=001(二进制)=1(十进制)

③应用:

例子①USACO平台上的cowxor(奶牛异或)

       ②NOIP棋盘翻转问题(用xor操作对棋盘翻转,比对棋盘数组进行赋值效率高N倍)


3.shr 和 shl移位操作

①原则: shr 右移       shl 左移

②运算:类似乘除法(*2或/2),不同于除法

例子:

3 shl 1(十进制)=11 shl 1(二进制)=110(二进制)=6(十进制)

3 shr 1(十进制)=11 shr 1(二进制)=1(二进制)=1(十进制)

③应用:

进制转换(效率高于 div 和 mod)

0 0
原创粉丝点击