题目描述
- 给定任一个各位数字不完全相同的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;
}
}
}
}