PAT乙级 1019 数字黑洞

把当时的代码放出来,大家共同学习,互相帮助
题目:
在这里插入图片描述
输入样例1:

6767

输出样例1:

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174

输入样例2:

2222

输出样例2:

2222 - 2222 = 0000

注意:
1.题目中输入的是(0,10000)的数,不一定是4位数,如果不是4位数,我们要用0补齐4位
2.两数相减之差可能不是4位数,要用0补齐

代码如下(Python):

def main():  # 主函数
    number = input()
    if len(number) != 4:  # 输入不足四位的用0补足四位
        number = number.zfill(4)
    if number[0] == number[1] == number[2] == number[3]:  # 输入的数四位全相同则输出  
        print('{} - {} = 0000'.format(number, number))
    else:
        while True:  # 循环调用make_difference直到number=‘6174’
            number = make_difference(number)  # 差值赋给number
            if number == '6174':
                break
    return 0


def make_difference(num):  # 求差并返回结果
    num = list(num)  # 以字符串每个字符为列表元素转换为列表
    num.sort(reverse=True)  # 降序排列
    num = ''.join(num)  # 列表元素拼接为字符串
    num_reverse = num[::-1]  # 字符串倒置
    difference = str(int(num) - int(num_reverse)).zfill(4)  # 差用0补齐4位
    print('{} - {} = {}'.format(num, num_reverse, difference))  # 格式化输出
    return difference


main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

~豆沙味的旺仔

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值