计算任意位数的黑洞数

黑洞数是指这样的整数:
由这个数字每位数字组成的最大数减去每位数字组成的最小数仍然得到这个数自身。
例如3位黑洞数是495,因为954-459=495,4位数字是6174,因为7641-1467=6174。

def max( x ):
    data=[]
    while x/1!=0:
        k=x%10
        x=x//10
        data.append(k)   #计算出它的个 十 百  千... 位
    data.sort(reverse=-1)   #逆序排   求最大值  类似[2,3,1]->  [3,2,1]
    data1=map(str,data)
    data2="".join(data1)  #连接操作
    x=int(data2)
    return x


def min( x ):
    data=[]
    while x/1!=0:
        k=x%10
        x=x//10
        data.append(k)    #计算出它的个 十 百  千... 位
    data.sort()
    data1=map(str,data)
    data2="".join(data1)
    x=int(data2)
    return x


x=int( input ('请输入几位数')  )
set1=set()
for i in range( 10**(x-1),10**x ):
    y=max(i)-min(i)
    if y==i:
        set1.add( i )
if len(set1)!=0:
    for i in set1:
        print(x,'位数的黑洞数为:',i)
else:
    print(x,'位数中没有黑洞数')

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值