题目都像以下这样:
假设在n进制下,下面等式成立,n值是() 567*456=150216 (题自阿里巴巴面试题)
A 9 B 10C 12 D 18
思路:强行计算不仅效率低下而且计算量很大,浪费时间。换种想法来讲,无论是几进制,它的计算方法都是 " 个位*(进制)^0+十位*(进制)^1+百位*(进制)^2..."
通过计算和降幂,最终可以得到想要的结果。
过程:以上题为例,首先两边同时计算得到
(5n²+6n+7)*(4n²+5n+6)=(n^5+5n^4+2n²+n+6)
合并同类项:20n^4+49n³+88n²+71n+42=n^5+5n^4+2n²+n+6
两边同时%n后得到的结果为:42%n = 6%n =>42%n = 6 ------->可以排除B答案
然后对上面的同类项进行降幂得到20n³+49n²+88n+71+42/n=n^4+5n³+2n+1+6/n
两边同时再%n后得到(71+42/n)%n=(1+6/n)%n=1
带入得出n = 18。
在今后再次遇见这样的问题时,就可以现将它以进制运算的办法展开后模进制降幂所得到。