任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432,一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈(称为数字黑洞)。

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

请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。

循环圈的输出格式仿照:

[82962, 75933, 63954, 61974]

其中数字的先后顺序可以不考虑。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet; public class Main {
public static HashSet<ArrayList<Integer>> set = new HashSet<ArrayList<Integer>>();
public static int start; public String getMax(int n) {
StringBuffer s = new StringBuffer("");
String temp = "" + n;
if(temp.length() < 5) {
while(temp.length() < 5) {
temp = "0" + temp;
}
}
char[] arrayN = temp.toCharArray();
Arrays.sort(arrayN);
for(int i = arrayN.length - 1;i >= 0;i--)
s.append(arrayN[i]);
return s.toString();
} public String getMin(int n) {
String temp = getMax(n);
StringBuffer s = new StringBuffer(temp);
return s.reverse().toString();
} public int getResult(int n) {
int max = Integer.valueOf(getMax(n));
int min = Integer.valueOf(getMin(n));
return max - min;
} public static void main(String[] args) {
Main test = new Main();
for(int i = 10000;i < 100000;i++) {
if(i % 11111 == 0)
continue;
ArrayList<Integer> list = new ArrayList<Integer>();
int a = i;
while(true) {
a = test.getResult(a);
if(!list.contains(a))
list.add(a);
else
break;
}
start = list.indexOf(a);
ArrayList<Integer> temp = new ArrayList<Integer>();
for(int j = start;j < list.size();j++)
temp.add(list.get(j));
Collections.sort(temp);
set.add(temp);
}
for(ArrayList<Integer> list : set)
System.out.println(list);
}
}

最新文章

  1. Linux远程服务器上安装SVN
  2. Google Play笔记之上架
  3. H5版俄罗斯方块(1)---需求分析和目标创新
  4. ArcGIS Server10.2服务启动不了之http://localhost:6080/arcgis/manager无法打开之arcMap 无法打开6080admin问题解决之路
  5. 桌面虚拟化之XenDesktop7
  6. 如何设置适当的ramp-up period值
  7. 【HDOJ】1502 Regular Words
  8. background-position也许你没考虑到
  9. Debug编辑通过转Release找不到命名空间
  10. BAD packet signature 18245 错误解决
  11. Linux下C++/C的编译调试
  12. 【BZOJ2005】【NOI2010】能量采集(莫比乌斯反演,容斥原理)
  13. Poj2749:Building roads
  14. Inventory Transactions Manager
  15. 【CF429E】 Points and Segments(欧拉回路)
  16. linux 查看文件显示行号
  17. 2019.02.16 spoj Query on a tree IV(链分治)
  18. excel 常用法
  19. CentOS 7安装Zabbix 3.4
  20. GS 服务器端开启webservice 远程调试的方法

热门文章

  1. javaweb学习之路(3)Cookie
  2. HttpServletRequest 和 HttpServletResponse详解
  3. 有一分数序列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13....求出这个数列的第M到N项之和(M&gt;2,N&gt;2,N&gt;M)
  4. 【比较】遗传算法GA和遗传编程GP有什么不同?
  5. Mysql之Linux中mariadb主从复制
  6. CSS类与选择器【转】http://www.cnblogs.com/duanhuajian/archive/2012/12/17/2821524.html
  7. Canvas 画圆
  8. 【一致性检验指标】Kappa(cappa)系数
  9. 王艳 201771010127《面向对象程序设计(java)》第七周学习总结
  10. Educational Codeforces Round 56 (Rated for Div. 2) F. Vasya and Array