此題說來慚愧。輸入資料過大不能儲存在long long中。冥思苦想想不到處理方法,最後看了一篇博文才受了啟發,採取逐位計算的方法來對字串進行處理,有點類似硬體的計算方法了。具體演算法如下:
從高到低逐位進行:除以二存在另乙個串中,再判斷此位奇偶。若奇則c位1,若偶則c位0。將c同下位一起重複如此演算法。一趟完畢,將t串複製回s串中,再次逐位%2/2.
題目描述:將乙個長度最多為30位數字的十進位製非負整數轉換為二進位制數輸出。
輸入:多組資料,每行為乙個長度不超過30位的十進位製非負整數。
(注意是10進製數字的個數可能有30個,而非30bits的整數)
輸出:每行輸出對應的二進位制數。
樣例輸入:
0138
樣例輸出:
01111000
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...