任意一个 5 位数,比如:34256,把它的各位数字打乱,重新排列,可以得到

一个最大的数:65432,一个最小的数 23456。

求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足 5 位,则前边补 0)。如此往复,数字会

落入某个循环圈(称为数字黑洞)。

比如,刚才的数字会落入:[82962,75933, 63954, 61974]这个循环圈。

请编写程序,找到 5 位数所有可能的循环圈,并输出,每个循环圈占 1 行。

其中 5 位数全都相同则循环圈为[0],这个可以不考虑。循环圈的输出格式仿照:

[82962,75933, 63954, 61974]其中数字的先后顺序可以不考虑。

/*

*/

package Question30_39;

import java.util.Arrays;

import java.util.HashSet;

import java.util.Iterator;

61

import java.util.LinkedHashSet;

import java.util.Scanner;

import java.util.Set;

public class Question30TooDifficultMustRemember{

public static int MaxSubMin(int n) {

StringBuffer sb=new StringBuffer(""+n);

while (sb.length()<5) {

sb.insert(0, '0');

}

char ch[]=(sb.toString()).toCharArray();

Arrays.sort(ch);

int

max=(ch[4]-'0')*10000+(ch[3]-'0')*1000+(ch[2]-'0')*100+(ch[1]-'0')*10+ch[0]-'0';

int

min=(ch[0]-'0')*10000+(ch[1]-'0')*1000+(ch[2]-'0')*100+(ch[3]-'0')*10+ch[4]-'0';

return max-min;

}

public static Set blackHole(int n) {

Set set=new LinkedHashSet();

set.add(n);

while(true){

n=MaxSubMin(n);

if(set.add(n)==false){

SettSet=new LinkedHashSet();

for (Iterator iterator = set.iterator(); iterator.hasNext();) {

Integer integer = (Integer) iterator.next();

if(integer==n){

break;

}else {

tSet.add(integer);

}

}

set.removeAll(tSet);

break;

}

}

return set;

}

public static void main(String[] args) {

Scanner scanner=new Scanner(System.in);

// int n=scanner.nextInt();

Set>set=new LinkedHashSet<>();

for (int i = 10000; i < 100000; i++) {

62

set.add(blackHole(i));

}

for (Iterator iterator = set.iterator(); iterator.hasNext();) {

Set set2 = (Set) iterator.next();

System.out.println(set2);

}

}

}

运行结果:

[0]

[74943, 62964, 71973, 83952]

[63954, 61974, 82962, 75933]

[53955, 59994]

数字黑洞java_java实现数字黑洞相关推荐

  1. 数字黑洞java_Java中数字黑洞实现代码

    给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序,然后用第1个数字减第2个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有"数字黑洞&qu ...

  2. 数字倒序Java_java输入数字,输出倒序的实例

    java输入数字,输出倒序的实例,逆序,整数,给大家,请输入,三种 java输入数字,输出倒序的实例 易采站长站,站长之家为您整理了java输入数字,输出倒序的实例的相关内容. 我就废话不多说了,大家 ...

  3. 宇宙有黑洞,信息数字黑洞

    工业互联网.5G+智能化.云平台等如雨后春笋般接踵而至,大数据时代数字黑洞是指那些无法有效处理和利用的大量数据,它们像黑洞一样,吞噬着有价值的信息,同时对数据分析和决策带来了巨大的困难. 假设某家电商 ...

  4. 西绪福斯黑洞(123数字黑洞)——java实现

    西绪福斯黑洞(123数字黑洞) 数学中的123就跟英语中的ABC一样平凡和简单.然而,按以下运算顺序,就可以观察到这个最简单的数字 黑洞的值: 设定一个任意数字串,数出这个数中的偶数个数,奇数个数,及 ...

  5. 【数字孪生】关于数字孪生的冷思考及其背后的建模和仿真技术

    来源:系统仿真学报 张霖                          北京航空航天大学教授.曾任国际建模仿真学会(SCS)主席,北 航自动化   学院副院长等,现为ASIASIM主席,中国仿真学 ...

  6. js 判断是不是数字||判断字符串是不是数字(正则表达式)

    js使用正则表达式判断对象是不是数字,或者字符串是不是数字,或者是不是数字类型 1 //判断是不是一个数字 或者 一个字符串里全是数字 2 isNumber (value) { 3 if (value ...

  7. js 数字递增递减_数字推理满分技巧 !不是干货,请批我!

    公众号:兼得公考 数字推理不是广东的特色考点,但广东的数字推理是比较有"特色"的,他的特色就是简单,特别是2019年的数字推理.但我们不能因为某一两年考得简单而简单地学,为了让大家 ...

  8. C将十六进制数字字符串转成数字

    1.将十六进制数字字符串转成数字 long   lTemp   =   strtol("0xa10b", NULL, 16); 这样的话,就将0xa10b这个十六制形式的字符串转为 ...

  9. python 如何将字符串数字列表转换成数字列表,如何将数字列表转换成字符串数字列表?map(eval,list(str))

    字符串数字列表转换成数字列表 # -*- encoding: utf-8 -*- """ @File : test.py @Time : 2019/10/28 23:37 ...

  10. 怎样能用计算机打出表白数字,怎么用数字表白?盘点数字表白暗语

    怎么用数字表白?盘点数字表白暗语 时间:2020-05-03 19:43:06来源:考试帮手网作者:敏敏 表白的方法有很多,大家用过最多的就是文字表白,大家有没有听说过用数字表白呢?数字表白如今已经成 ...

最新文章

  1. 栈和队列的区别 | 每日趣闻
  2. spring 初始化数据库
  3. css网页布局中文字排版的属性和用法
  4. Chrome用户请尽快更新:谷歌发现两个严重的零日漏洞
  5. 【来龙去脉系列】.net分布式系统架构的思路
  6. Silverlight Training
  7. 容器化技术如何在数据中心实践
  8. objective-c 编写规范_Objective-c成员变量的定义方式?如何写才规范?
  9. unity官方教程-TANKS(一)
  10. mysql数据库分析结果与结论_mysql数据库show processlist结果分析
  11. SQL Server where和having区别
  12. 数据bag中的激光雷达数据和相机数据分割出来
  13. Java MD5 加密工具类
  14. 数字图像处理——基于matlab的车牌号识别
  15. MyBatis官方文档-简介
  16. 基于Modelica的起落架摆震建模
  17. 一句话讲清种子轮、天使轮、ABC轮的区别
  18. 部署社区版deepflow
  19. 大数据征信成撬动消费金融的支点?
  20. power bi 雷达图_星载雷达与C波段地基雷达数据一致性个例分析 | 新文速递

热门文章

  1. sa结构组网方式_NSA和SA两种组网方式均为5G
  2. 编程中常见的数学概念及常用解法
  3. 网络安全等级保护概述
  4. 维基百科数据导入mysql数据库并进行检索操作
  5. 第二重要极限公式推导过程_土木考研 土力学第八章公式推导
  6. 0CTF-babyheap2017祥讲
  7. 【周博磊】强化学习纲要 一至六讲笔记
  8. matlab 三维图像 叠加,利用 Matlab构建“波的叠加”图样
  9. 2018-2019年江苏省高等学校“阿里云大数据技术实战训练营”大学生万人计划学术冬令营开营...
  10. canvas绘制出货单