欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > python-确定进制

python-确定进制

2024/10/24 22:25:30 来源:https://blog.csdn.net/2401_83954530/article/details/142169940  浏览:    关键词:python-确定进制

题目描述

6 ×9=42 对于十进制来说是错误的,但是对于 13 进制来说是正确的。即 6(13)​ ×9(13)​=42(13)​,而 42(13)​=4 ×13^1+2 ×13^0=54(10)​。

你的任务是写一段程序读入三个整数 p,q 和 r,然后确定一个进制 B(2≤B≤16) 使得 p ×q=r 。如果 B 有很多选择,则输出最小的一个。

例如:p=11,q=11,r=121,则有 11(3)​ ×11(3)​=121(3)​,因为 11(3)​=1 ×3^1+1 ×3^0=4(10)​ 和 121(3)​=1 ×3^2+2 ×3^1+1 ×3^0=16(10)​。对于进制 10 , 有 11(10)​ ×11(10)​=121(10)​。这种情况下,应该输出 3。如果没有合适的进制,则输出 0。

输入

一行,包含三个整数 p,q,r ,相邻两个整数之间用单个空格隔开。

输出

一个整数:即使得 p×q=r  成立的最小的 B。如果没有合适的 B,则输出 0。

样例输入1

6 9 42

样例输出1

13

提示

p,q,r 的所有位都是数字,并且 1≤p,q,r≤106 。

来源/分类(难度系数:一星)

函数与递归 进制转换

 

 

完整代码展示:

# coding=utf-8

p,q,r=map(int,input().split())

s=[]

x=list(str(r))

x.reverse()

for i in range(2,17):

      y=p*q

      sum=0

      for j in range(0,len(x)):

            sum+=eval(x[j])*i**j

      if sum==y:

           s.append(i)

if len(s)==0:

    print(0)

else:

       print(s[0])

# coding=utf-8
p,q,r=map(int,input().split())
s=[]
x=list(str(r))
x.reverse()
for i in range(2,17):y=p*qsum=0for j in range(0,len(x)):sum+=eval(x[j])*i**jif sum==y:s.append(i)
if len(s)==0:print(0)
else:print(s[0])

 

 

代码解释:

p,q,r=map(int,input().split()) ”,导入用户的三个整数p,q,r。

s=[]

  x=list(str(r))

  x.reverse() ”,建立一个空列表s,用于储存可能存在的进制数。接着将x转换为字符串储存在列表x中,再将x反转。

for i in range(2,17):

       y=p*q

       sum=0

       for j in range(0,len(x)):

            sum+=eval(x[j])*i**j

       if sum==y:

            s.append(i)           ”,遍历2~16的数字i,查找是否存在符合的进制数p,q之积p*q等于该数字的进制数r。如果有:则将i添加进s中。

if len(s)==0:

      print(0)

 else:

       print(s[0])  ",遍历结束后,判断s是否为空:如果为空,打印0,否则打印s[0]。

 

 

运行效果展示:

6dc7ecc0c5dd4354af224e8107684a9e.jpeg

9b08aa19039e42c3888b24632cb054a8.jpg

 

拓展延伸:

除bin(),hex(),oct()等内置进制转换函数外,可通过自定义函数进行进制转换。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com