看到陈越姥姥说20分的题目控制在30分钟之内做完,这道题我刚好用了20分钟。
一开始我想除了二进制和八进制,其他我都不太了解怎么办,好在十进制到二进制的转换给了我灵感,可以写一个D进制的函数一次转化完成。
其实十进制转化为二进制就是不断取余的过程,参考博客[1]中的做法:

我写出了这个函数:
A,B,D= map(int,input().split(" "))
C = A+B
#提示:十进制转化二进制,除二取余
lst = [] #用来存放D进制数的各位数字
def Djinzhi(c,d):
while c%d != c:
lst.append(c%d)
c = int(c/d)
lst.append(c%d) #因为如果只有上面的话没办法 算到最后一位
Djinzhi(C,D)
lst.reverse()
D_print = 0
n = len(lst)
for i in range(n):
D_print = D_print+lst[i]*(10**(n-1-i))
print(D_print)
这里要注意几点,因为我是取一次余然后添加一个元素到列表(顺序添加),并没有倒着添加,这就导致我求出来的D进制其实和真实的D进制是反着的,所以需要用reverse方法将这个list倒过来。
以及一开始我在while循环后忘记再添加一位,这会导致忽略掉一个数。

references:
[1] https://blog.csdn.net/weixin_42061048/article/details/80140472

&spm=1001.2101.3001.5002&articleId=109551133&d=1&t=3&u=eb8259652d414582924459a0547afa69)
1639

被折叠的 条评论
为什么被折叠?



