pat 乙级1019 数字黑洞 (20 分) python

这篇博客介绍了如何使用Python解决PAT乙级考试中的1019题——数字黑洞问题。博主探讨了数字的递增、递减以及非递增、非递减排列,并给出了具体的解决方案。
摘要由CSDN通过智能技术生成

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

def is_equal(num):
    num = str(num).zfill(4)
    i = num[0]
    if num.count(i) == 4:
        return True
    else:
        return False


def get_max(num):  # 指从左到右 为从大到小
    num = str(num).zfill(4)
    _ = sorted(list(map(int, list(num))), reverse=True)
    _ = list(map(str, _))
    return int("".join(_))


def get_min(num):  # 指从左到右 为从小到大
    num = str(num).zfill(4)
    _ = sorted(list(map(int, list(num))))
    _ = list(map(str, _))
    return int("".join(_))


if __name__ == '__main__':
    n = int(input())
    if is_equal(n):
        print(f"{n} - {n} = 0000")
    else:
        while get_max(n) - get_min(n) != 6174:
            print(f"{str(get_max(n)).zfill(4)} - {str(get_min(n)).zfill(4)} = {str(get_max(n) - get_min(n)).zfill(4)}")
            n = get_max(n) - get_min(n)
        print(f"{str(get_max(n)).zfill(4)} - {str(get_min(n)).zfill(4)} = {str(get_max(n) - get_min(n)).zfill(4)}")

就说一点 懂吧
1,2,3,4,5,.:递增排列
9,8,7,6,5.:递减排列
1,2,3,3,4,5,8,8,.:非递减排列
9,8,7,7,6,5,5,2,1,.:非递增排列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值