题目
题目内容:
给定一个M进制的数,请将其转换为N进制并输出
输入格式:
两行,第一行为空格分隔的两个数字,分别为10进制表示的M与N;其中M, N均满足2 ≤ M、N ≤ 36
第二行为待转换的数字,其中每位超过9的部分从10至36分别用大写字母A-Z表示;输入数据保证其中最大位数对应数字不超过M
输出格式:
一行字符串,表示转换后的N进制数
输入样例:
8 16
473
输出样例:
13B
时间限制:500ms内存限制:32000kb
思路
首先将目标数字转换为10进制
接着按照前面讲的递归方法求解
程序如下
def zhuan_huan(mylist, num): #主递归函数
M = mylist[0]
N = mylist[1]
ch_str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
if num//N == 0: #递归结束条件
return str(num)
else:
return zhuan_huan([M,N],num//N) + ch_str[num % N]
def zhuan_huan_10(mylist,num): #10进制转换函数
M = mylist[0]
ch_str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
int_num = 0
for i in range(len(num)):
int_num += ch_str.index(num[i]) * M ** (len(num) - 1 - i)
return int_num
mylist = list(map(int, input().split())) #第一行输入
num = input() #第二行输入
print(zhuan_huan(mylist,zhuan_huan_10(mylist,num)))
总结
提交后结果如下
用例1未通过原因不明
学习陈斌老师的数据结构与算法Python版课有感