300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java蓝桥杯数字黑洞_【蓝桥杯】数字黑洞(5位黑洞数)

java蓝桥杯数字黑洞_【蓝桥杯】数字黑洞(5位黑洞数)

时间:2020-06-30 09:05:35

相关推荐

java蓝桥杯数字黑洞_【蓝桥杯】数字黑洞(5位黑洞数)

任意一个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.HashSet;

import java.util.Iterator;

import java.util.List;

import java.util.Set;

public class Test数字黑洞 {

static int index = 0;

static List list = new ArrayList();

static Set set = new HashSet();

public static void main(String[] args) {

/*for (int i = 10000; i <= 99999; i++) {

f("" + i);

}*/

f("34256");

Iterator it = set.iterator();

while (it.hasNext()) {

System.out.println(it.next());

}

System.out.println("总共有:" + set.size() + "组");

}

public static void print() {

String str = "[";

for (int i = index; i < list.size(); i++) {

if (i == list.size() - 1) {

str += list.get(i);

} else {

str += list.get(i) + ",";

}

}

str += "]";

set.add(str);

}

public static void f(String num) {

String s = num;

String sMax = "", sMin = "";

int arrInt[] = new int[s.length()];

for (int i = 0; i < arrInt.length; i++) {

arrInt[i] = Integer.parseInt(s.split("")[i]);

}

for (int i = 0; i < arrInt.length; i++) {

for (int j = i + 1; j < arrInt.length; j++) {

if (arrInt[j] < arrInt[i]) {

int temp = arrInt[i];

arrInt[i] = arrInt[j];

arrInt[j] = temp;

}

}

}

for (int i = 0; i < arrInt.length; i++) {

sMin += arrInt[i];

}

int min = Integer.parseInt(sMin);

for (int i = 0; i < arrInt.length; i++) {

for (int j = i + 1; j < arrInt.length; j++) {

if (arrInt[j] > arrInt[i]) {

int temp = arrInt[i];

arrInt[i] = arrInt[j];

arrInt[j] = temp;

}

}

}

for (int i = 0; i < arrInt.length; i++) {

sMax += arrInt[i];

}

int max = Integer.parseInt(sMax);

String result = "" + (max - min);

for (int k = 0; k < list.size(); k++) {

if (result.equals(list.get(k))) {

index = k;

print();

index = 0;

list.removeAll(list);

return;

}

}

list.add(result);

f(result);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。