進製轉換基礎問題
對乙個p進製的數要轉換成q進製,需要分為兩步:
1.將乙個p進製數x轉換為十進位制數y
2.將十進位制數轉換成q進製數
step1:
對乙個十進位制數y=d1d2…dn,可以寫成:
y=d110n-1+d210n-2+…+dn-110+dn;
同樣的,如果p進製數x為a1a2…an,那麼它寫成下面這個形式之後使用十進位制加法和乘法,就可以轉換為十進位制數y:
y=a1pn-1+a2pn-2+…+an-1p+an;
而這個公式可以很容易用迴圈進行實現:
int y=0;
int product=0;
while
(x!=0)
step2:將十進位制數轉化為q進製數z
採用「除基取餘法」。基:指將要轉換成的進製q,因此除基取餘的意思就是每次將待轉換數除以q,然後將得到的餘數作為低位儲存,而商則繼續除以q並進行上面的操作,最後當商==0時,將所有位從高到低輸出就可以得到z。
eg:將十進位制數11轉換為二進位制數:(d to b)
//十進位制轉二進位制
int z[40]
=null
;int count=0;
while
(x!=0)
for(
int i=count-
1;i>=
0;i++
)
練習題:pat b1022 :d進製的a+b
輸入兩個非負十進位制整數a和b(<=2^30-1^ )以及d(進製數),輸出a+b的d(1非常的簡單。
#include
;using
namespace std;
intmain()
sum = a + b;
while
(sum !=0)
for(
int i = count -
1; i >=
0; i--
)return1;
}
《演算法筆記》
基礎訓練 進製轉換 進製轉換
sample input 4 7440x80685 1sample output 0x40x70x2c 525957 問題鏈結 uva10473 base conversion 問題簡述 略 問題分析 這是乙個進製轉換問題。include intmain else return 0 學到的點 本題中...
進製轉換問題
基礎 進製轉換問題 easy time limit 1000ms memory limit 65536k total submit 271 accepted 153 description 若將乙個正整數n化為二進位制,在此二進位制數中,我們將數字1的個數多於數字0的個數的這類二進位制數稱為a類數,...
進製轉換問題
基礎 進製轉換問題 easy time limit 1000ms memory limit 65536k total submit 271 accepted 153 description 若將乙個正整數n化為二進位制,在此二進位制數中,我們將數字1的個數多於數字0的個數的這類二進位制數稱為a類數,...