常見的進製轉換就是十進位制、二進位制、八進位制、十六進製制之間的轉換,那麼如果給你乙個等式,讓你判斷在哪種進製下該等式成立?這型別的題該怎麼求解。接下來通過兩個例題講解一下:
例1. 如果等式 15*4=112 成立,那麼用了下列哪一種進製?
a. 6 b. 7 c. 8 d. 9
第一種比較笨的辦法就是將選項帶入,把15、4、112分別轉換,看哪乙個成立。
第二種方法就是將個位數字相乘,然後對進製取餘,若餘數與等式右邊的結果值的各位相等,那麼就是用了該進製。
15的個位數是5,將5*4,得20,那麼20再分別對6、7、8、9取餘,112的個位數是2,若餘數等於2,那麼就是用了該進製,顯而易見,20只有對6取余才是2,所以這道題的答案是a選項。
例2. 假設在n進製下,等式 567*456=150216 成立,求n的值。
a. 9 b. 10 c. 12 d. 18
按照例1中的第一種方法求解顯然不現實,運算量太大,所以這題用第二種方法求解。
567與456的個位數相乘得42,那麼42對9、10、12、18分別取餘,只有對10取餘的結果值不為6,所以只能排除b選項,然後我們就需要對十位進行這樣的運算,那麼上面的等式就可以表示為:
(5*n^2+6*n+7) * (4*n^2+5*n+6) = 1*n^5+5*n^4+0*n^3+2*n^2+1*n+6 將等式化簡得:
20*n^4+25*n^3+30*n^2+24*n^3+30*n^2+36*n+28*n^2+35*n+42 = 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 (1)
(1)的兩邊同時對n取餘:
42%n = 6%n (2) (因為只能排除乙個選項,所以還要繼續對下一位取餘)
(2)的兩邊同時對n^2取餘:
(71*n+42)%n^2 = (n+6) %n^2 化簡得:
(71+42/n)%n = (1+6/n)%n = 1 (3)
所以可以求出該題的答案是12。
位運算和進製轉換
位運算指的是對二進位制進行的計算處理。主要有 與 或 異或 求反 其特徵為 都是1的時候才是1 如 13 7 計算過程為 13的二進位制 1101 7的二進位制 0111 得到結果 0101 轉換成10進製則是5 計算過程為 1101 0111 按照或運算得到結果是 1111 轉化成10進製為 15...
大數運算之進製轉換
大數的之間的進製轉換不能簡單的用取餘法來做,這樣會導致溢位。以牛客網的這道題10進製 vs 2進製 為例,題目給的數字已經達到了1000位,即使用long long型別也沒辦法儲存,所以要用字元陣列來儲存。然後用模擬手算除法的方式來進行進製轉換。如下 includeusing namespace s...
位運算轉換二進位制 進製轉換
普通十進位制轉換二進位制 1.通過不斷 2 和 2 得到用 1 0表示的數存進陣列 但是得到的是倒序 2.將陣列裡面的值倒序輸出再存入新的陣列即可 其他進製轉換同理 但是這種方法複雜且 較長 includeint main int count1 0 for int i count 1 i 0 i f...