#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个不同进制的数分别把它们转换成十进制数输出。
【解题思路】
本题主要考察内置函数,嵌套循环和进制转换的使用。
- 首先获取一个整数n。
- 进行n次循环,在每次循环中,将该行输入分割成两个部分k和st。k设置为
一个整数,st是一个字符串。
3.将st逆序,遍历st中的每个字符,使用enumerate()函数将st组合为一个索引
序列,同时列出数据ch和数据下标j。使用if语句根据字符的类型(数字或字母)
计算出其对应的权重,并将这些权重乘以k的相应次方j,最后将所有的乘积相
加得到结果ans。
Limitation
1s, 1024KiB for each test case.