因为本人较菜,所以花了很多时间才终于理清楚了计算机中去模运算和除法运算的用处,然后在这里分享下
众所周知,在初步学习编程时,我们总会碰到一种换算的 题目,它们有的是以金钱换算为背景,有些干脆就是告诉你比率让你算,对于这类题,其实只要理解除法和取模的运算,就会好理解很多,程序也能够理得更清楚些.
首先,没有题目就没有形象性,所以我举这道题目作为例子给讲解下,链接可以看这里,或者去pta官网也行CSDN
然后,注意下这道题,从小的基元单位K,可以看出,其他几个位制都可以通过题目给的换算出来,然后我们这里可以把换算的过程看作是一个塔型,或者说树,那么最大的父节点的数量就是Galleon的数量,换言之,第一次对Knut进行一次/29,相当于把它换到了更上一层的Sickle节点,在进行一次/17,就是切换到了Galleon节点.这是简单的,然后我们再来看一下,Sickle的换算,因为sickle二点范围被锁死在了[0, 17) ,也就是说,这时候剩下来的sickle是不能转化成上一级的节点的,那么我们就可以通过取余的操作,取余的操作相当于挖去已经被用掉的全部节点,最后剩下来的节点,同时,这里剩下来的节点都是knut,因为取余没有进制转化的功能它是给我们基元的数量.那么我们要得到S就必须要将K%29%17,这时候是剩下来的kunt的数量,那么我们将它它除以29,就可以得到结果,而K就相当于找到全部不能构成上一级节点的剩余全部节点,所以直接对%29取余就好,不需要进一步对17取余