陈斌老师《数据结构与算法Python版》第五周作业——进制转换

陈斌老师《数据结构与算法Python版》第五周作业——进制转换

题目

题目内容:

给定一个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版课有感

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值