d = {'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15}
s = input()[2:]
x = 0
for i in s:
val = int(i) if i.isdigit() else d[i]
x = x * 16 + val
print(x)
这题用题干里的说明算的话就得从右往左算幂次,搞了半天感觉有点晕了,但回忆一下进制的原理,从左到右更简单,你看十进制,实际上是1 = 0*10 +1, 11 = 1*10 +1. 那其实只要把前面两个占位符去掉,然后要么数字要么字母,如果是数字,直接加,如果是字母,用字典转换一下。
冷知识,可以直接用int转换,int('F',16)输出等于15,但是我还是老老实实写了字典,因为考试的时候会记不清楚这些冷门语法。

京公网安备 11010502036488号