演示数字黑洞现象

简介:

一,问题描述

所谓“数字黑洞”现象,就是任意给定一个4位正整数,将组成该正整数的4个数字先按非递减顺序排序,得到一个数称为Large;再将这4个数字按非递增顺序排序,得到另一个数,称为Small。然后,将Large减去Small,得到一个新的数字。当然,其它位数的也存在着这个现象,具体可参考:数字黑洞

将这个新的数字重复上面的处理,很快就会停在有“数字黑洞”之称的 6174 这个数上。这个数也称为Kaprekar常数。

 

二,举例说明

比如,输入6767,其演示结果如下:

7766 - 6677 = 1089
9810 - 0189 = 9621  ----将新得到的数 1089 进行非递减及 非递增排序后,分别得到 9810 和 0189(189)
9621 - 1269 = 8352
8532 - 2358 = 6174

 

三,核心思路分析

这个问题的核心过程是:将数字分解成各个位,然后按非递增或非递减排序,再得到排序后的数字。

数字分解的话,可以用求余 和 除法。排序的话,可以用Arrays.sort(int[] arr)。得到排序后的数字,其实就是Horner法则。

①数字分解:

复制代码
    private static int[] split(int n){
//assert n >= 1000; assert n <= 9999 int[] arr = new int[4]; int index = 0; while(n != 0) { arr[index++] = n % 10; n = n / 10; } return arr; }
复制代码

 

②Horner法则得到数字:关于Horner法则可参考:求幂运算、多项式乘法及Horner法则的应用

复制代码
    //1089-->9810, arr是从小到大的有序数组
    private static int toLarge(int[] arr){
        int result = 0;
        for(int i = arr.length - 1; i >=0; i--)
        {
            result = result*10 + arr[i];
        }
        return result;
    }
    
      //1089 --> 189 arr是从小到大的有序数组
    private static int toSmall(int[] arr){
        int result = 0;
        for(int i = 0; i < arr.length; i++)
        {
            result = result*10 + arr[i];
        }
        return result;
    }
复制代码

 

四,整个代码完整实现:


本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/p/5727179.html,如需转载请自行联系原作者

相关文章
|
1月前
|
存储 算法 索引
模拟算法题练习(二)(DNA序列修正、无尽的石头)
模拟算法题练习(二)(DNA序列修正、无尽的石头)
|
8月前
|
编解码 IDE 算法
2023年电赛---运动目标控制与自动追踪系统(E题)发挥题思路
2023年电赛---运动目标控制与自动追踪系统(E题)发挥题思路
240 0
|
1月前
春晚刘谦第二个魔术原理讲解
春晚刘谦第二个魔术原理讲解
30 2
|
4月前
|
C++
数学建模——最大流问题(配合例子说明)(二)
数学建模——最大流问题(配合例子说明)
|
4月前
|
C++
数学建模——最大流问题(配合例子说明)(一)
数学建模——最大流问题(配合例子说明)
202 0
|
8月前
|
编解码 计算机视觉 Python
2023年电赛---运动目标控制与自动追踪系统(E题)关于网友的问题回复
2023年电赛---运动目标控制与自动追踪系统(E题)关于网友的问题回复
252 0
|
9月前
|
API
EasyCaptcha验证码去掉干扰线、圈
图形验证码工具EasyCaptcha,生成的图形验证码都默认带干扰线和圈
EasyCaptcha验证码去掉干扰线、圈
|
12月前
|
测试技术
字符串a和他许久未见面的同父异母的b(模拟)(思维)
字符串a和他许久未见面的同父异母的b(模拟)(思维)
59 0
|
安全 C++
CSDN三道简单题:合并检测、星期一、特别数的和
CSDN三道简单题:合并检测、星期一、特别数的和
97 0
CSDN三道简单题:合并检测、星期一、特别数的和
|
人工智能 算法
靠这个信息差,我省了至少上千块!
靠这个信息差,我省了至少上千块!
107 0
靠这个信息差,我省了至少上千块!