3602. 十六进制和三十六进制转化
给你一个整数 n
。
返回 n2
的 十六进制表示 和 n3
的 三十六进制表示 拼接成的字符串。
十六进制 数定义为使用数字 0 – 9
和大写字母 A - F
表示 0 到 15 的值。
三十六进制 数定义为使用数字 0 – 9
和大写字母 A - Z
表示 0 到 35 的值。
示例 1:
输入:n = 13
输出: "A91P1"
解释:
n2 = 13 * 13 = 169
。在十六进制中,它转换为(10 * 16) + 9 = 169
,对应于"A9"
。n3 = 13 * 13 * 13 = 2197
。在三十六进制中,它转换为(1 * 362) + (25 * 36) + 1 = 2197
,对应于"1P1"
。连接两个结果得到
"A9" + "1P1" = "A91P1"
。
示例 2:
输入:n = 36
输出:"5101000"
解释:
n2 = 36 * 36 = 1296
。在十六进制中,它转换为(5 * 162) + (1 * 16) + 0 = 1296
,对应于"510"
。n3 = 36 * 36 * 36 = 46656
。在三十六进制中,它转换为(1 * 363) + (0 * 362) + (0 * 36) + 0 = 46656
,对应于"1000"
。连接两个结果得到
"510" + "1000" = "5101000"
。
提示:
1 <= n <= 1000
思路
余数反转,先36后16
代码
class Solution {
public String concatHex36(int n) {
StringBuilder sb = new StringBuilder();
int decimal = n * n * n;
while (decimal > 0) {
int remainder = decimal % 36;
if (remainder < 10) {
sb.append(remainder);
} else {
sb.append((char) (remainder + 55));
}
decimal /= 36;
}
decimal = n * n;
while (decimal > 0) {
int remainder = decimal % 16;
if (remainder < 10) {
sb.append(remainder);
} else {
sb.append((char) (remainder + 55));
}
decimal /= 16;
}
return sb.reverse().toString();
}
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 孤寂灬无痕
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果