/**
*
任意一个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.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class 数字黑洞 {
static Set<List
> set = new HashSet<List
>();
static int start = 0;
public static void main(String[] args) {
List
list = new ArrayList
(0);
for (int i = 10000; i < 100000; i++) {
if (i % 11111 == 0) {
continue;
} else {
检测循环圈(i, list);
}
}
print();
}
private static void print() {
Iterator<List
> it = set.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } private static void 检测循环圈(int n, List
list) { String s = n+""; char[] c = s.toCharArray(); int a = max(c); int b = min(c); int d = a -b ; if(寻找循环圈(d,list)){ List
temp = new ArrayList
(); temp.addAll(list.subList(start, list.size())); if(!contains(temp)&&temp.get(0)!=0){ set.add(temp); } list.clear(); return ; } list.add(d); 检测循环圈(d,list); } //去重 private static boolean contains(List
temp) { boolean flag = false; Iterator<List
> it = set.iterator(); while(it.hasNext()){ if(it.next().containsAll(temp)){ flag = true; break; } } return flag; } private static boolean 寻找循环圈(int n, List
list) { for(int i = 0;i<list.size();i++){ if(list.get(i)==n){ start = i; return true; } } return false; } //计算最小的数字 private static int min(char[] c) { Arrays.sort(c); StringBuffer sb = new StringBuffer(String.valueOf(c)); return Integer.parseInt(sb.toString()); } //计算最大的数字 private static int max(char[] c) { Arrays.sort(c); StringBuffer sb = new StringBuffer(String.valueOf(c)); return Integer.parseInt(sb.reverse().toString()); } } 运行结果: [63954, 61974, 82962, 75933] [74943, 62964, 71973, 83952] [53955, 59994]
任意一个5位数,比如:34256,把它的各位数字打乱,重新排列,可以得到一个最大的数:65432, 一个最小的数23456。求这两个数字的差,得:41976,把这个数字再次重复上述过程(如果不足5位,
最新推荐文章于 2022-10-09 22:37:14 发布