黑马程序员技术交流社区
标题:
基本的程序解决数字黑洞问题
[打印本页]
作者:
何亚辉
时间:
2016-5-25 22:56
标题:
基本的程序解决数字黑洞问题
package com.heima;
public class Exercise {
public static void main(String[] args) {
A: for (int j = 10000; j < 99999; j++) {
for (int i = j, k = 0;; i = get(i), k++) {
if (k > 4 && i == get(get(get(get(i))))) {
System.out.println("[" + i + " " + get(i) + " " + get(get(i))
+ " " + get(get(get(i)))+"]");
continue A;
}
}
}
}
public static int get(int i) {
int[] arr = new int[5];
for (int j = i, k = 0; j >= 1; j /= 10, k++) {
arr[k] = j % 10;
}
int[] a = new int[5];
for (int j = 0; j < arr.length; j++) {
for (int j2 = j + 1; j2 < arr.length; j2++) {
if (arr[j2] > arr[j]) {
arr[j2] = arr[j] ^ arr[j2];
arr[j] = arr[j] ^ arr[j2];
arr[j2] = arr[j] ^ arr[j2];
}
}
a[j] = arr[j];
}
int sum = 0;
for (int k = 0, g = 10000; k < a.length; k++, g /= 10) {
sum += (a[k] - a[4 - k]) * g;
}
return sum;
}
}
作者:
何亚辉
时间:
2016-5-25 22:57
问题:有任意一个5位数,如:34256,把它的各位数字打乱,重新排列,就可得到一个最大的数:65432,还有一个最小的数23456。求这两个数字的差,得:41976,然后把这个数字再次重复上述过程(如果不足5位,则前边补0)。如此往复,数字会落入某个循环圈
- 57 -
(称为数字黑洞)。比如,刚才的数字会落入:[82962, 75933, 63954, 61974] 这个循环圈。 请编写程序,找到5位数所有可能的循环圈,并输出,每个循环圈占1行。其中5位数全都相同则循环圈为 [0],这个可以不考虑。循环圈的输出格式仿照:[82962, 75933, 63954, 61974],其中数字的先后顺序可以不考虑。 5.百鸡问题 问题: 3文钱可以买1只公鸡, 2文钱可以买一只母鸡 1
作者:
何亚辉
时间:
2016-5-25 23:00
http://bbs.itheima.com/forum.php?mod=attachment&aid=MTExMDQ4fDVkMWE2ODUwMjc5YzFlNWYwZThiZTNjNTU3MzdmNDk1fDE3NjMzMzk0Njc%3D&request=yes&_f=.png
M2[71~QKHC1_33YGQF)%B(5.png
(283.29 KB, 下载次数: 34)
下载附件
2016-5-25 23:00 上传
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2