九度OJ 1138 進製轉換

2021-07-26 14:01:09 字數 898 閱讀 3051

此題說來慚愧。輸入資料過大不能儲存在long long中。冥思苦想想不到處理方法,最後看了一篇博文才受了啟發,採取逐位計算的方法來對字串進行處理,有點類似硬體的計算方法了。具體演算法如下:

從高到低逐位進行:除以二存在另乙個串中,再判斷此位奇偶。若奇則c位1,若偶則c位0。將c同下位一起重複如此演算法。一趟完畢,將t串複製回s串中,再次逐位%2/2.

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

輸入:多組資料,每行為乙個長度不超過30位的十進位製非負整數。

(注意是10進製數字的個數可能有30個,而非30bits的整數)

輸出:每行輸出對應的二進位制數。

樣例輸入:

013

8

樣例輸出:

0111

1000

2023年北京大學軟體所計算機研究生機試真題

答疑:

#include #include #include using namespace std;

int main()

t[i]='\0';

// %2

sta.push(c);

//copy

if (t[0]=='0'&&strlen(t)!=1)

tindex=1;

else

tindex=0;

for (i=0;t[tindex]!='\0';i++,tindex++)

s[i]='\0';

}//output

while (!sta.empty()){

cout<

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

題意 將乙個長度最多為30位數字的十進位製非負整數轉換為二進位制數輸出。由於這個10進製數的長度已經達到30位,屬於大整數 超出20位的long long 的進製轉換。將輸入的大整數存在int陣列裡,把這個陣列當作乙個整數,模擬小學時候學的整數除法,讓這個大整數每次對2取餘,最終的餘數倒排就是結果,...

題目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...