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

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
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)
发布了126 篇原创文章 · 获赞 35 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43442524/article/details/104465886
今日推荐