TOJ 292
題目
https://toj.tfcis.org/oj/pro/292/
給三個整數 $A, B, C$ ,表示 $C$ 當前為 $A$ 進位制,求轉換成 $B$ 進位制的樣子。其中,我們只會在 $2$~$10$ 進位制之間轉換
想法
- 先將 $C$ 想辦法換成我們熟悉的數字表示方式十進位
- 統一從十進位轉換為其他進位制
而我們可以透過進位制本身的定義去想,例如 $216 = 210^2 + 110^1 + 6*10^0$。那麼,我們就可以將任意進位制的數值轉換成我們熟悉的樣子了。
要從十進位轉換成其他進位制,可以直接模擬短除法來達成。例如要將 $15_{10}$ 轉成二進位表示。
$15/2 = 7 … 1$
$\ \ 7/2 = 3 … 1$
$\ \ 3/2 = 1 … 1$
那麼我們可以獲得 $1111_{2}$
Code
1 | //By Koios1143 |
複雜度分析
先轉換成十進位的時間複雜度為 $O(log_{10}{n})$
轉換成其他進位的時間複雜度為 $O(log_{10}{n})$
總時間複雜度約為 $O(log_{10}{n})$