【趣味学算法】11_黑洞数

注: 本系列仅为个人学习笔记,学习内容为《算法小讲堂》(视频传送门),通俗易懂适合编程入门小白,需要具备python语言基础,本人小白,如内容有误感谢您的批评指正

黑洞数又称陷阱数,是指任何一个数字不全相同的整数,在经过有限次“重排求差”操作后,总会得到某一个或某一些数,这些数即为黑洞数。

“重排求差”操作是将组成一个数的各位数字重排,将得到的最大数减去最小数
例如,207的重排求差操作序列是:720-027=693, 963-369=594, 954-459=495,此时再进行重排求差操作将不会发生改变。
再用208计算一次:820-028=792, 972- 279=693,963-369=594,954-459=495,也是停止到495,所以495是三位黑洞数。
根据上面的的操作可以得出对于任意一个数字不完全相同的整数,最后结果总会陷入黑洞圈或黑洞数里,最后结果一旦为黑洞数之后无论重复多少次重排求差结果都是一样的,因此可以通过判断连续的两次结果是否相等来作为黑洞数的依据。

那么要找出所有三位的黑洞数应该如何实现呢?

代码实现思路如下:

  1. 将任意三位数拆分
  2. 拆分后的数重新组合得到最大值和最小值并求差
  3. 将差值结果暂存到临时变量中
  4. 将差值继续拆分重组求差
  5. 判断当前差值与上一差值是否相等,相等结束,不相等循环以上步骤

代码实现如下:

def Rearrange_the_difference(i):
    a = i//100
    b = i%100//10
    c = i%10
    if a < b:
        t = a
        a = b
        b = t
    if b < c:
        t = b
        b = c
        c = t
    if a < c:
        t = a
        a = c
        c = t
    max = a*100+b*10+c
    min =c*100+b*10+a
    print('max={},min={}'.format(max,min))
    return max-min

if __name__ == '__main__':
    h = 0
    i = int(input('请输入一个各位不完全相同三位整数:'))
    h = Rearrange_the_difference(i)
    while h > 0:
        last = h
        h = Rearrange_the_difference(h)
        if h == last:
            print('黑洞数:{}'.format(h))
            break

测试结果如下

请输入一个各位不完全相同三位整数:709
max=790,min=97
max=963,min=369
max=954,min=459
max=954,min=459
黑洞数:495

相关推荐

  1. 趣味算法11_黑洞

    2024-04-06 02:26:04       36 阅读
  2. 趣味算法13_素数

    2024-04-06 02:26:04       75 阅读
  3. 趣味算法16_递归练习

    2024-04-06 02:26:04       32 阅读
  4. 趣味算法】00_百鸡百钱

    2024-04-06 02:26:04       32 阅读
  5. 趣味算法】07_爱因斯坦的数学题

    2024-04-06 02:26:04       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-06 02:26:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-06 02:26:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-06 02:26:04       87 阅读
  4. Python语言-面向对象

    2024-04-06 02:26:04       96 阅读

热门阅读

  1. postcss安装和使用

    2024-04-06 02:26:04       40 阅读
  2. 【WPF应用26】C#中的CheckBox控件详解与应用示例

    2024-04-06 02:26:04       43 阅读
  3. 热浪

    2024-04-06 02:26:04       30 阅读
  4. WebView的使用和后退键处理

    2024-04-06 02:26:04       44 阅读
  5. 蓝桥杯每日一题:转圈游戏(快速幂)

    2024-04-06 02:26:04       37 阅读
  6. SpringBoot 接口加密解密

    2024-04-06 02:26:04       32 阅读
  7. “全双工“是什么

    2024-04-06 02:26:04       39 阅读
  8. 【C/C++】数组模拟数据结构

    2024-04-06 02:26:04       39 阅读
  9. 安卓APP的技术质量:如何提高

    2024-04-06 02:26:04       35 阅读
  10. 函数model. addGenConstrMax

    2024-04-06 02:26:04       44 阅读
  11. C# 静态方法的小芝士

    2024-04-06 02:26:04       36 阅读
  12. Vue3:重构Pinia的store,使用组合式写法实现

    2024-04-06 02:26:04       41 阅读