#4216. 进制转换(23-9C++四级)

进制转换(23-9C++四级)

【问题描述】

N进制数指的是逢N进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合

也是常用的计数制(十六进制中,一般使用字母 A ⾄ F 表示十至十五)。

在本题中,我们将给出N个不同进制的数。你需要分别把它们转换成十进制数。

【提示】

对于任意一个L位K进制数,假设其最右边的数位为第0位,最左边的数位为第L-1位,我们只需要将其第i位的数码乘以权值K,再将每位的结果相加,即可得到原K进制数对应的十进制数。下面是两个例子: | 1. | 八进制数1362对应的十进制数为 | | 2. | 十六进制数3F0对应的十进制数为 |

【输入描述】

输入的第一行为一个十进制表⽰的整数N。接下来N行,每行一个整数K,随

后是一个空格,紧接着是一个K进制数,表⽰需要转换的数。保证所有K进制数均由数字和大写字母组成,且不以0开头。保证K进制数合法。

| 保证 | ;保证 | ,保证所有K进制数的位数不超过9。

【输出描述】

输出N行,每一个十进制数,表⽰对应K进制数的十进制数值。

【样例输入1】


2


8 1362


16 3F0

【样例输出1】


754


1008

【样例输入2】


2


2 11011


10 123456789

【样例输出2】


27


12345679

【题目大意】

首先,输入要转换的行数,用N表示。接下来输入N行,每行格式为:K K进制数。将给出N个不同进制的数分别把它们转换成十进制数输出。

【解题思路】

本题主要考察内置函数,嵌套循环和进制转换的使用。

  1. 首先获取一个整数n。
  2. 进行n次循环,在每次循环中,将该行输入分割成两个部分k和st。k设置为

一个整数,st是一个字符串。

3.将st逆序,遍历st中的每个字符,使用enumerate()函数将st组合为一个索引

序列,同时列出数据ch和数据下标j。使用if语句根据字符的类型(数字或字母)

计算出其对应的权重,并将这些权重乘以k的相应次方j,最后将所有的乘积相

加得到结果ans。

Limitation

1s, 1024KiB for each test case.