整數轉進制字串
0.5s 256M請實作一個名為 to_base 的函式。評分程式會給你一個非負整數 x 與一個進制 d,你需要回傳 x 在 \(d\) 進制下的表示法字串。
你需要實作以下函式:
string to_base(long long x, int d);
- 正式評分程式會準備參數
x與d,然後呼叫to_base(x, d);。 - 請不要自行處理輸入輸出。
- \(d\) 進制的位數字 \(0\) 到 \(9\) 就寫成
0到9;位數字 \(10\) 到 \(35\) 用大寫英文字母表示,A代表 \(10\)、B代表 \(11\),依此類推到Z代表 \(35\)。 - 回傳的字串不能有多餘的前導零;當 \(x = 0\) 時請回傳單獨一個
"0"。 - 評測會檢查你的原始碼,禁止呼叫
to_chars、itoa等會直接完成本題核心工作的標準函式。請在to_base中自行實作。
輸入格式
範例評分程式採用以下格式輸入:
T
每一行放一次函式呼叫需要的參數,依序是 x 與 d
其中 \(T\) 代表評分程式會呼叫 to_base 的次數。
請注意,正式評分時不會要求你自行讀取輸入;它會直接呼叫你實作的函式。
限制
- \(1 \le T \le 40\)
- \(0 \le x \le 10^{18}\)
- \(2 \le d \le 36\)
輸出格式
範例評分程式會輸出每次呼叫後得到的結果。
請注意,正式評分時不會要求你自行輸出任何內容。
範例輸入 1
4
11 2
255 16
35 36
0 10
範例輸出 1
1011
FF
Z
0
範例解釋 1
\(11 = 1 \times 8 + 0 \times 4 + 1 \times 2 + 1 \times 1\),所以二進制寫成 1011。
\(255 = 15 \times 16 + 15\),而 \(15\) 這個位數字寫成 F,所以十六進制寫成 FF。
\(35\) 在 \(36\) 進制下只有一位,寫成 Z。
\(x = 0\) 時要回傳 0,不是空字串。
範例輸入 2
4
1000 2
1000 8
1000 16
1000 36
範例輸出 2
1111101000
1750
3E8
RS
範例解釋 2
同一個數字換不同進制,長度與用到的字母都不一樣。
範例輸入 3
2
1000000000000000000 10
131621703842267135 36
範例輸出 3
1000000000000000000
ZZZZZZZZZZZ
範例解釋 3
x 可能大到 int 裝不下。