Python数据结构与算法刷题(4)——D进制的A+B

浏览: 2915

前言

前文传送门:

Python数据结构与算法刷题(1)——害死人不偿命的(3n+1)猜想

Python数据结构与算法刷题(2)——挖掘机技术哪家强

Python数据结构与算法刷题(3)——跟奥巴马一起学编程

正文


输入两个非负10进制整数A和B(<=2^30-1),输出A+B的D (1 < D <= 10)进制数。


输入格式:

输入在一行中依次给出3个整数A、B和D。


输出格式:

输出A+B的D进制数。


输入样例:

123 456 8


输出样例:

1103


解题思路:先计算A+B(此时为十进制),然后把结果转换为D进制,而十进制转换为D进制的过程可以使用“除基取余法”。

这里的"基",指的是要转换为的进制D,除基取余指的是每次将要转换的数除以D,将余数存储起来,得到的商继续除D,重复操作,直到最后商为零。

将所有的余数从后往前输出就可以得到新的进制数z。


举个栗子:

11除以2,商为5,余数为1

5除以2,商为2,余数为1

2除以2,商为1,余数为0

1除以2,商为0,余数为1

将余数从后往前输出,得到1011就是11的二进制数。


上代码:

图片.png


注意点:

1.range()的步长、范围和反向输出

2.int的整除

3.列表的索引使用

4.input一次获取多个值与获取数据格式

5.print的默认格式改变

6.考虑特殊输入情况

图片.png

光看不练,眼高手低可不好哦,动手敲代码吧~

欢迎评论指出文中错误、代码优化和提问~~~

推荐 3
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

if __name__ == '__main__':
a,d = input().split()
a = int(a)
d = int(d)
ad = 0
for i in range(int(a**(1/d)) + 2):
ad += a % d * (10 ** i)
a //= d
print(ad)
a,b,c=input().split()
a=int(a)
b=int(b)
c=int(c)
add=a+b
print(add)
list1=[]
shang=add//c #商
yushu=add%c #余数
list1.append(yushu)
while shang !=0:
yushu=shang%c
list1.append(yushu)
shang//=c
list2=list(reversed(list1))
print(list2)
for i in range(len(list2)):
print(list2[i],end='')

要回复文章请先登录注册