清華大學考研複試機試 進製轉換

2021-09-12 08:16:31 字數 1041 閱讀 2486

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

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

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

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

此題為大數轉換問題,通過模擬手工計算過程來實現。清華大學的考研複試機試經常為考察大整數問題,通常使用string來儲存大數,然後模擬手工計算過程。

這個問題比較簡單,只是將十進位制轉化為二進位制。使用string來儲存十進位制整數,然後模擬手工計算過程,從第一位開始依次除以2。使用乙個臨時變數來儲存餘數,商直接寫入儲存輸入的string中,直到計算到最後乙個數字,這時將最後的餘數存入結果string中,就計算出了第乙個二進位制數字。

按照上述方法依次迴圈計算出各個位的二進位制數字,迴圈結束的條件是最初儲存輸入的string所有位都為0,這時因為我們把每一步計算出的商,直接寫回原string的緣故。在儲存結果的時候,可以將每一步計算出的二進位制位插入到string的前端,這樣最後可以直接輸出。也可以每次都插入string的結尾處,最後不要忘記從最後一位開始往前輸出。

#include

#include

using namespace std;

intmain

(void);

int bit[

100]=;

//同理結果也使用陣列儲存

while

(cin >> str)

int index =0;

//結果下標

while

(true)

if(j == length)

//模擬手工計算過程

for(

int i = j; i < length;

++i)

bit[index++

]= left;

//儲存結果

}//輸入為0的情況

if(index ==0)

else

} cout << endl;

}return0;

}

清華大學考研複試機試 進製轉換2

將m進製的數x轉換為n進製的數輸出。輸入的第一行包括兩個整數 m和n 2 m,n 36 下面的一行輸入乙個數x,x是m進製的數,現在要求你將m進製的數x轉換成n進製的數輸出。輸出x的n進製表示的數。10 2 111011輸入時如有字母,則字母為大寫,輸出時如有字母,則字母為小寫。這道題其實和10進製...

清華大學考研複試機試 abc

設a b c均是0到9之間的數字,abc bcc是兩個三位數,且有 abc bcc 532。求滿足條件的所有a b c的值。題目沒有任何輸入。請輸出所有滿足題目條件的a b c的值。a b c之間用空格隔開。每個輸出佔一行。水題,直接遍歷暴力求解即可,三層for迴圈。不過也有一些優化的點,可能優化效...

清華大學考研複試機試 root N,k

n 2000000000 每組測試資料報括一行,x 0輸入可能有多組資料,對於每一組資料,root x y,k 的值 4 4 104這道題乍一看好像沒有什麼思路,那就先暴力求解試試。不過不管你用pow函式,還是用快速冪運算,都過不了,因為結果已經爆long long int。有關快速冪運算這裡簡單提...