程序员的数学【结城浩】学习笔记(1-3章)0的故事,逻辑,余数
一,0的故事
将数字反复除以2,将每步所得的余数的 列逆序排列,得到二进制的表示
10的0次方,2的0次方,都可以从等式找规律:
10^3=1000;
10^2=100;
10^1=10;
之间都是后面的是前面的十分之一,所以可以推出10的0次方为1,10的(-1)次方也可以接着推导下去。
如果102中间的0去掉,代表的含义就错了。
如:求解乘方1234567的987654321次方的个位数:
转换思路:两数乘方的个位数,取决于这两个数的个位数,因此,计算某数的乘方的个位数,不需要把十位、百位、千位甚至更高位写出来进行计算。只需要把个位数揪出来计算就可以。
7的0次方的个位数=1,
7的1次方的个位数=7,
7的2次方的个位数=9,
7的3次方的个位数=3,
7的4次方的个位数=1,
7的5次方的个位数=7,
根据这个计算的结果,可以找到规律,即周期为4,乘方相隔4个就是一样的。个位数集为:{1,7,9,3}。
因此计算1234567的987654321次方的个位数,即时求987654321%4的值,然后根据这个值来确定个位数是多少。
因为987654321%4=1,所以答案为7.
运用余数,大数字的问题能够简化成小数字的问题。
奇偶校验: 1)黑白棋魔术 : 不管原数是什么, 增加一位校验码, 使某些数的重复为偶数 , 那么如果发生错误, 就可以知道是否发生错误
2)多次重复同一动作的问题范例: 寻找恋人
分类成奇数村和偶数村的问题,都从小的问题入手,找到规律
3)铺设草席
将黑色的“半张草席”数量记做+1
将白色的“半张草席”数量记做-1
对数量相加,结果为0,不一定能铺满,补位0肯定不能正好铺满。