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

2021-09-13 04:00:15 字數 1256 閱讀 7223

將m進製的數x轉換為n進製的數輸出。

輸入的第一行包括兩個整數:m和n(2<=m,n<=36)。

下面的一行輸入乙個數x,x是m進製的數,現在要求你將m進製的數x轉換成n進製的數輸出。

輸出x的n進製表示的數。

10 2

11

1011
輸入時如有字母,則字母為大寫,輸出時如有字母,則字母為小寫。

這道題其實和10進製與2進製的轉換是一樣的,演算法是相同的,只不過是換成了m和n而已,具體演算法可以參考博主之前的部落格進製轉換。不過這道題需要注意輸入和輸出的大小寫字母,所以需要單獨寫兩個轉化函式,這裡使用了c庫的判斷型別的函式。另外這道題使用陣列來儲存輸入和中間結果,並在計算過程中判斷輸入是否變為0,輸入變為0就表示已經計算出結果,不再像之前一樣單獨寫乙個判斷函式,這樣提高了效率。還要注意結果的儲存,如果將每一步的結果直接插入字串的結尾,則在輸出時需要逆序輸出;如果插入到字串的最前端,那麼最後可以直接輸出。

#include

#include

#include

//c庫型別函式

using namespace std;

int m, n;

//輸入

intctoi

(char c)

//char to int

else

}string itoc

(int i)

//int to char

else

string str(1

, temp)

;//string建構函式,將temp重複1次

return str;

}bool func

(int

* data, string& ret,

int length)

//轉化函式

num %

= n;

//餘數

} ret.

insert(0

,itoc

(num));

//將結果插入最前端,最後就可以直接輸出

return flag;

}int

main

(void

)while

(flag)

//主迴圈

cout << result;

delete [

] data;

}return0;

}

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

將乙個長度最多為30位數字的十進位製非負整數轉換為二進位制數輸出。多組資料,每行為乙個長度不超過30位的十進位製非負整數。注意是10進製數字的個數可能有30個,而非30bits的整數 每行輸出對應的二進位制數。此題為大數轉換問題,通過模擬手工計算過程來實現。清華大學的考研複試機試經常為考察大整數問題...

清華大學考研複試機試 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。有關快速冪運算這裡簡單提...