题目描述
- 给定任一个各位数字不完全相同的4位正整数,如果我们先把4个数字按非递增排序,再按非递减排序
- 然后用第1个数字减第2个数字,将得到一个新的数字。
- 一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫Kaprekar常数。
输入描述
- 输入给出一个(0, 10000)区间内的正整数N。
输出描述:
- 如果N的4位数字全相等,则在一行内输出“N - N = 0000”
- 否则将计算的每一步在一行内输出,直到6174作为差出现
- 注意每个数字按4位数格式输出。
代码实现
package com.liuyong666.pat;import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); while(true){ int[] arr = new int[4]; arr[0] = n / 1000; arr[1] = (n - arr[0] * 1000) / 100; arr[2] = (n - arr[0] * 1000 -arr[1] * 100) / 10; arr[3] = n % 10; String temp = ""+arr[0]+arr[1]+arr[2]+arr[3]; if(arr[0] == arr[1] && arr[0] == arr[1] && arr[0] == arr[2] && arr[0] == arr[3]){ System.out.println(temp+" - "+temp+" = 0000"); break; } Arrays.sort(arr); StringBuilder str =new StringBuilder(); for(int i = 0; i < 4; i++){ str.append(Integer.toString(arr[i])); } StringBuilder xiao_str = new StringBuilder(str); StringBuilder da_str = str.reverse(); n = Integer.valueOf(da_str.toString()) - Integer.valueOf(xiao_str.toString()); System.out.println(da_str.toString()+" - "+xiao_str.toString()+" = " + n); if(n == 6174){ break; } } }}