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*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])

 

 

代码解释:

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()等内置进制转换函数外,可通过自定义函数进行进制转换。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪云-微星

感谢大家的支持与鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值