求任意兩個不同進製非負整數的轉換( 2 進製~ 16 進製),所給整數在 long 所能表達的範圍之內。不同進製的表示符號為( 0,1,…,9,a,b,…,f)或 者(0,1,…,9,a,b,…,f)。
輸入: 輸入只有一行,包含三個整數 a,n,b。a 表示其後的 n 是 a 進製整數, b 表示欲將 a 進製整數 n 轉換成 b 進製整數。 a,b 是十進位制整數, 2 =< a,b <= 16。
輸出: 可能有多組測試資料,對於每組資料,輸出包含一行,該行有乙個整數為轉 換後的 b 進製數。輸出時字母符號全部用大寫表示,即( 0,1,…,9,a,b,…, f)。
樣例輸入:
15 aab3 7 樣例輸出:
210306
為了完成兩個進製之間的轉換,我們將這個轉換分為兩步:首先將a進製轉換為十進位制,再將得到的十進位制數轉換為 b進製。
我們按照如下過程完成其它進製向十進位制的轉換:利用乙個變數 c依次計算 每個數字權重,它的初始值為 1,每經過一位就累乘進製數 a,使表示權重的變數 c依次等於 1、a、a2、a3…;從低位到高位依次遍歷各個數字上的數字,同時 將其與當前位的權重(即變數 c)相乘;最後依次累加所得到的積,即可得到由 十進位制表示的數字。
#include
#include
using
namespace std;
intmain()
else
if(str[i]
>=
'a'&& str[i]
<=
'z')
else
tmp +
= x * c;
//累加
c = c * a;
//計算下一位權值
}char ans[40]
, size =0;
//用ans儲存轉換到b進製的各個數字數字
dowhile
(tmp)
;for
(int i = size -
1; i >=
0; i--
) cout << endl;
}return0;
}
王道計算機機試 數字拆解 特殊乘法
寫個演算法,對 2 個小於 1000000000 的輸入,求結果。特殊乘法舉例 123 45 14 15 24 25 34 35 輸入 兩個小於 1000000000 的數 輸出 輸入可能有多組資料,對於每一組資料,輸出 input 中的兩個數按照題目 要求的方法進行運算後得到的結果。第一種方法 i...
計算機進製轉換
一 計算機只認識0和1,二進位制。二 2進製轉換成 8進製 和 16進製制,如下圖 二進位制 八進位制 研究上圖發現,3位最高二進位制可以用來表示一位八進位制。所以,將二進位制分解每3位,不夠前面補0,然後每3位轉換為10進製,順序排列即可。二進位制 十六進製制 4位最高二進位制可以用來表示一位十六...
王道計算機機試 巧妙求素數 素數篩法
若乙個數不是素數,則必存在乙個小於它的素數為其的因數。這個命題的正確性是顯而易見的。那麼,假如我們已經獲得了 小於乙個數的所有素數,我們只需確定該數不能被這些素數整除,這個數即為素 數。但是這樣的做法似乎依然需要大量的列舉測試工作。正因為如此,我們可以換乙個角度,在我們獲得乙個素數時,即將它的所有倍...