10进制转36进制
题目
十进制转为 36 进制:1,2,3,4,5,6,7,8,9,A,B,C…X,Y,Z,10
示例1:
输入:80
输出:28
解法
10进制转成36进制的过程为:\(n = x_n * 36^n + x_{n-1} * 36^{n-1} + ... + x_1 * 36^1 + x_0 * 36^0\)
辗转相除
public class Solution {
public static String trans(int num) {
int tmp = 1;
int n = 0;
StringBuilder res = new StringBuilder();
while (num >= 36) {
while (tmp <= num) {
tmp *= 36;
}
tmp /= 36;
n = num / tmp;
res.append(transSingleNum(n));
num -= n * tmp;
tmp = 1;
}
res.append(transSingleNum(num));
return res.toString();
}
public static String transSingleNum(int num) {
// 将10进制下 36 以内的数字转成 36 进制
if (num < 10) {
return String.valueOf(num);
}
return String.valueOf((char) ('A' + (num - 10)));
}
}