將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。有關快速冪運算這裡簡單提...