Just Do IT !

Python算法学习: 任意进制转换

字数统计: 267阅读时长: 1 min
2020/02/23 Share

Python实现任意进制转换

给出一个A进制数N,你要把它转成B进制。

输入
第一行是两个整数A,B(2<=A,B<=16)

第二行是一个A进制的字符串N。题目保证A进制数N转成10进制后的范围在inti型范围内。

如果A>=10,且某些位的权值大于等于10,那么权值就用小写字母表示,比如,a代表10,bb代表11,c代表12,d代表13,e代表14,f代表15。

输出
输出N转成B进制的结果。

输入
10 2
100
输出
1100100
输入
2 16
10001111
输出
8f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def f(n, x):
#n为待转换的十进制数,x为机制,取值为2-16
a=[0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f']
b=[]
while True:
s=n // x # 商
y=n % x # 余数
b=b+[y]
if s==0:
break
n=s
b.reverse() # 辗转相除法
ans = ''
for i in b:
ans += str(a[i])
return ans

A,B = map(int, input().split())
n = int(input())
n = int(str(n), A) # int函数可以将A进制的n统一转为十进制
ans = f(n, B)
print(ans)
CATALOG
  1. 1. Python实现任意进制转换