package com.raylew.algorithm.ntoj; import java.util.Arrays; import java.util.Scanner; /* 数学黑洞6174。已知:一个任意的四位正整数,将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。 即:7641-1467=6174。将永远出不来。求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。 输入一个四位数字不全相同的四位正整数 输出掉进黑洞的步数 样例输入 1034 样例输出 Step=2 */ public class B0004 { public static int fir = 0; public static int sec = 1; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); fir = Math.abs(maxStr(num + "") - minStr(num + "")); int p = 0; while (sec != fir) { sec = Math.abs(maxStr(fir + "") - minStr(fir + "")); fir = Math.abs(maxStr(sec + "") - minStr(sec + "")); p++; System.out.println("first:" + fir + ",second" + sec); } System.out.println(p + 1); } /** * 最小字符串 * * @param str * @return */ public static int minStr(String str) { char[] temp = str.toCharArray(); Arrays.sort(temp); return Integer.parseInt(String.valueOf(temp)); } /** * 最大字符串 * * @param str * @return */ public static int maxStr(String str) { char[] temp = str.toCharArray(); Arrays.sort(temp); String s = ""; for (int i = temp.length - 1; i >= 0; i--) { s += temp[i]; } return Integer.parseInt(s); } }