九度OJ 1138 進製轉換(求大整數的2進製)

2021-07-31 04:38:09 字數 575 閱讀 6666

題意:將乙個長度最多為30位數字的十進位製非負整數轉換為二進位制數輸出。

由於這個10進製數的長度已經達到30位,屬於大整數(超出20位的long long)的進製轉換。

將輸入的大整數存在int陣列裡,把這個陣列當作乙個整數,模擬小學時候學的整數除法,讓這個大整數每次對2取餘,最終的餘數倒排就是結果,如圖所示,52(10) = 110100(2)

需要注意的是,由於某位的商為0,所以可能存在多個前導0,每次要跳過這些前導0來求商。

#include 

#include

using namespace std;

int main()

res[cnt++] = mod; //本次除法產生的餘數

}if (cnt == 0)

cout << 0

<< endl;

else

}return

0;}

九度OJ 1138 進製轉換

此題說來慚愧。輸入資料過大不能儲存在long long中。冥思苦想想不到處理方法,最後看了一篇博文才受了啟發,採取逐位計算的方法來對字串進行處理,有點類似硬體的計算方法了。具體演算法如下 從高到低逐位進行 除以二存在另乙個串中,再判斷此位奇偶。若奇則c位1,若偶則c位0。將c同下位一起重複如此演算法...

題目1138 進製轉換 九度OJ

題目1138 進製轉換 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 4282 解決 1608 題目描述 將乙個長度最多為30位數字的十進位製非負整數轉換為二進位制數輸出。輸入 多組資料,每行為乙個長度不超過30位的十進位製非負整數。注意是10進製數字的個數可能有30個,而非30bit...

九度OJ 題目1080 進製轉換

題目描述 將m進製的數x轉換為n進製的數輸出。輸入 輸入的第一行包括兩個整數 m和n 2 m,n 36 下面的一行輸入乙個數x,x是m進製的數,現在要求你將m進製的數x轉換成n進製的數輸出。輸出 輸出x的n進製表示的數。樣例輸入 16 10 f 樣例輸出 15 本題考查大數處理。將乙個m進製的大數d...