在学习进制的时候,我相信大家都会经常遇到这种问题,假如一个等式成立,那这种编译器中使用的是几进制,这种题我们一般的做法都是一个一个的去试,试到哪个就是哪个,这样的办法虽然实用,但是太浪费时间了,遇到简单的数字还好,如果遇到的是一个很大的数字,那计算量就很大了。在这里,我学习到了一个较为简单的方法,来解决这种问题,也写出来和大家分享分享。以这个等式为例:15*4=112,那么我们先可以看出15乘以4的个位数字,很容易可以得出是20,然后在选项中有6、7、8和9四个数字,我们先来看第一个数字6,用20除以6得到余数2,然后再看等号右边的数字的个位,发现也是2,因此就是六进制。为了以防万一,我们也可以用这种方法来试试其它选项,最终确定答案。但是凡事也有例外,有时候用这种方法并不能解决问题。以下是阿里哪一年的笔试题,这道题也印证了阿里的确是阿里的道理。
假设在n进制下,下面的等式成立,567*456=150216,n的值是()
A.9 B.10 C.12 D.18
这道题用我以上的方法做的话,你会发现只能排除B选项,其实这也是白费功夫,两个数字相乘个位是2,然后一看后面的答案就不是。那既然那一套不管用了,那我们就用另一个办法:先把n进制下的数字写出来,得出的结果是:(5n^2+6n+7)*(4n^2+5n+6)=20n^4+49n^3+88n^2+71n+42=n^5+5n^4+2n^2+n+6,然后两边同时对n取余,得到 42%n == 6,这时得到第一个表达式,然后再对两边先除以n再对n取余 (71+42/n) %n ==(1+6/n) %n ==1 此时得到第二个表达式 (71+42/n) %n == 1,然后把选项代进去,一一试过后得到答案是选项D,18进制。这道题应该是本类题目的最高境界了。
以上就是我今天对这种题目的一些简单的理解。