判斷一個計算是以多少進位制進行的
我們經常會遇到這麼一個問題,例如,假設在n進位制下,4*6=33,求n是多少?很多人一看,這不簡單嘛,4*6=24,24/3=7...3,就是7進位制嘛。
這種方法是可以,但是如果數字太大的情況下呢?我們得進行多麼大的計算量才能算下來?所以今天我來和大家分享一個與此類似的阿里巴巴的面試題。
假設在n進位制下,下列等式是成立的567*456=150216,n的值是( )
A、9 B、10 C 、12 D 、18
顯然這個題不能通過上面的簡單辦法來計算,那我們應該怎麼辦呢?
我們可以先把上面的大數字化簡一下,把它拆開 寫成(5*n^2+6*n+7)*(4*n^2+5*n+6)=1*n^5+5*n^4+2*n^2+n+6
->20*n^4+49*n^3+88*n^2+71*n+42=n^5+5*n^4+2*n^2+n+6
首先第一步,我們用等式的兩邊都對n取餘,則等式就變為 42%n=6%n。本來在題目簡單的情況下,只通過這一步便可以確定算式的進位制數,但是像阿里巴巴這種變態公司出的題,你會發現A、42%9=6%9,
第二步,我們用等式的兩邊除以n後,再對n取餘。那麼等式就變成了(71+42/n) %n=(1+6/n)%n 。再通過這個式子將A ,C ,D,帶入其中進行檢測 。
A、左邊(71+42/9)%9=3 ,右邊(1+6/9)%9=1
C、左邊(71+42/12)%9=2 ,右邊(1+6/9)%9=1
D、左邊
所以答案就選D。通過這個方法,我們就可以解決這一類求進位制數的問題。