python-数字黑洞

[题目描述]
给定一个三位数,要求各位不能相同。例如,352是符合要求的,112是不符合要求的。将这个三位数的三个数字重新排列,得到的最大的数,减去得到的最小的数,形成一个新的三位数。对这个新的三位数可以重复上述过程。神奇的是,最终一定会得到495!
试试看,重新排列352,得到的最大数为532,最小数为235,它们的差是297;变换297,得到972−279=693;变换693,963−369=594;变换594,954−459=495。因此,经过4次变换得到了495。
现在,输入的三位数,你能通过编程得出,这个三位数经过多少次变换能够得到495吗?
输入:
输入一行,包含一个符合要求的三位数N。
输出:
输出一行,包含一个整数C,表示经过C 次变换得到 495。
样例输入1
352

样例输出1
4

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

 

完整代码如下:
a=int(input())
i=0
while a!=495:
    b=a%10
    c=a//10%10
    d=a//100%10
    e=b*100+c*10+d
    f=b*100+d*10+c
    g=c*100+b*10+d
    h=c*100+d*10+b
    m=d*100+b*10+c
    n=d*100+c*10+b
    k=[e,f,g,h,m,n]
    a=max(k)-min(k)
    i=i+1
print(i)

 

代码解释:
“a=int(input()) ”,让用户输入任意三位数。
“i=0
while a!=495:
    b=a%10
    c=a//10%10
    d=a//100%10
    e=b*100+c*10+d
    f=b*100+d*10+c
    g=c*100+b*10+d
    h=c*100+d*10+b
    m=d*100+b*10+c
    n=d*100+c*10+b
    k=[e,f,g,h,m,n]
a=max(k)-min(k)
i=i+1  ”,令i等于0;当a不等于495时,先求出a的个,十,百位数b,c,d。然后将这三个数字进行随机组合,并依次将其存入列表k中。找出列表中的最大数和最小数,并用最大数减去最小数,将差值赋给a。每循环一次,i值就加1;如此循环,直至a=495。
“print(i) ”,打印i最终值,即循环的次数。

 

运行效果展示:

5b1a1b8fd397430698c64dbf204435f3.jpg
 

933cfc455f0642289cdb61f6ecd4f9ce.jpg 

       (声明:以上内容均为原创)

 

 

 

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

闪云-微星

感谢大家的支持与鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值