进制问题
有一个面试题是这样的:
如果某系统15*4=112成立,则系统采用的是()进制。
A:6
B:7
C:8
D:9
下面讲两种方法
一、有一个最快的方法是这样的:
首先求余数
5 * 4%6 余2
5 * 4%9 余2
所以排除 BC
15*4=60,60约为112的一半,那么哪个数与 10(进制)的一半最接近呢,答案很明显的是 6 进制。
(但是此方法不推荐大家使用,假如数字大的话)
二、第二种方法
左右两边同时转换为十进制数计算:
设结果为n进制,则有
(1* n + 5 ) * 4 = n2 * 1 + n * 1+2
解出n =6。
下面再说一个数字较大的题目:
这是一道腾讯的笔试题
假设在n进制下,下面的等式成立,567*456=150216, n的值是()。
A. 9
B.10
C.12
D.18
此题数字较大,使用上面第二种方法
(5n2+6n+7) * (4n2+5n+6) = n5+5n4+2n2+1*n2+6
20n4+49n3+88n2+71n+42 = n5+5n4+2n2+n+6 —— (1)
分解后发现数字太大,不好计算,继续分解:
(1)的两边同时%n,得:
42%n=6(对n取余就是把有n的项数全部扔掉,只留下常数项) —— (2)
(1)的两边同时除以n,然后再同时%n
(71+42/n) % n = (1+6/n) % n = 1 ((1+6/n) % n此项可视为 1%n)
(71+42/n) % n = 1 ——(3)
得出n=18。