#P05019. 进制转换

进制转换

题目背景

对于 nn 进制数 aa,如果某位上数字超过 1010,那么用大写字母来表示这个位上的数:AA 表示 1010BB 表示 1111CC 表示 1212,...,以此类推。例如两位十六进制数 AB,其高位是 A(其实就是 1010),其低位是 B(其实就是 1111)。


nn 进制数转 mm 进制,一般先将 nn 进制数转换成十进制数(按权相加法),再将十进制数转换成 mm 进制数(短除法)。


nn 进制整数转换成十进制数:按权相加法

例如二进制数 (11001)2(11001)_2,其实是:

$(11011)_2 = 1 \times 2^4 + 1 \times 2^3+0 \times 2^2+0 \times 2^1+1 \times 2^0 = 25$;

上面的计算其实就是:$(((((0\times 2+1)\times 2+1)\times 2+0)\times 2+0)\times 2)+1$,所以也可以用下面的方式计算:

n = 0
n = n*2 + 1
n = n*2 + 1
n = n*2 + 0
n = n*2 + 0
n = n*2 + 1
//处理后n的值就是二进制数11011对应的十进制数

又例如八进制数 (128)8(128)_8,其实是:

$(128)_8 = 1 \times 8^2 + 2 \times 8^1 + 7 \times 8^0 = 87$;

上面的计算其实就是:((0×8+1)×8+2)×8+7((0\times 8+1)\times 8+2)\times 8 + 7,所以也可以用下面的方式计算:

n = 0
n = n*8 + 1
n = n*8 + 2
n = n*8 + 7
//处理后n的值就是八进制数127对应的十进制数

又例如十六进制数 (A1F)16(A1F)_{16},其实就是:

$(A1F)_{16} = 10 \times 16^2 + 1 \times 16^1 + 15 \times 16^0 = 2591$。

上面的计算其实就是:((0×16+10)×16+1)×16+15((0\times 16+10)\times 16+1)\times 16 + 15,所以也可以用下面的方式计算:

n = 0
n = n*16 + 10
n = n*16 + 1
n = n*16 + 15
//处理后n的值就是十六进制数A1F对应的十进制数

十进制整数转 nn 进制数:短除法

以十进制数 5353 转二进制为例:

以十进制数 9199491994 转十六进制为例:

题目描述

现在给定一个 nn 进制的非负整数 aa,想知道其转 mm 进制的结果。

输入格式

三个数据 nnaamm,用一个空格隔开相邻的两个数据。

输出格式

nn 进制的非负整数 aamm 进制的结果。

输入输出样例

10 255 16
FF
16 FF 10
255
16 FF 2
11111111

说明/提示

👀️ 对于100%100\%的数据,2n,m162 \leq n,m \leq 16nn 进制非负整数 aa 对应的十进制数不大于 1015 10^{15}