01:数制转换python
问题描述:
01:数制转换
查看提交统计提问
总时间限制: 1000ms 内存限制: 65536kB
描述
求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
不同进制的表示符号为(0,1,.,9,a,b,.,f)或者(0,1,.,9,A,B,.,F)。
输入
输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。
a,b是十进制整数,2 =< a,b <= 16。
输出
输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,.,9,A,B,.,F)。
样例输入
15 Aab3 7
样例输出
210306
答
思路,现将n进制转换为10进制,随后将其转换为b进制数,有帮助请采纳,谢谢
def convert10_n(n, base):
_ = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 'A', 'B', "C", "D", "E", "F"]
d = _[n % base]
mark = n // base
if mark > 0:
return convert10_n(mark, base) + d
else:
return d
def a_n_b(a,n,b):
return int(convert10_n(int(n,a),b))
print(a_n_b(15 ,'Aab3', 7))
答
chars = '0123456789ABCDEF'
def 进制转化(a,n,b):
f = int(a)
t = int(b)
x = list(str(n).upper())
s = 0
for i in range(len(x),0,-1):
s += chars.index(x[len(x)-i])*f**(i-1)
r = ''
while s>0:
r = chars[s%t] + r
s = s//t
return r
a,n,b = input().split()
print(进制转化(a,n,b))