網易2017校招內推筆試練習卷編程題1--1019.數字黑洞20

給定任一個各位數字不完全相同的4位正整數,如果我們先把4個數字按非遞增排序,再按非遞減排序,然後用第1個數字減第2個數字,將得到
一個新的數字。一直重複這樣做,我們很快會停在有“數字黑洞”之稱的6174,這個神奇的數字也叫Kaprekar常數。

例如,我們從6767開始,將得到

7766 - 6677 = 1089
9810 - 0189 = 9621
9621 - 1269 = 8352
8532 - 2358 = 6174
7641 - 1467 = 6174
... ...

現給定任意4位正整數,請編寫程序演示到達黑洞的過程。

輸入描述:
輸入給出一個(0, 10000)區間內的正整數N。



輸出描述:
如果N的4位數字全相等,則在一行內輸出“N - N = 0000”;否則將計算的每一步在一行內輸出,直到6174作爲差出現,輸出格式見樣例。注意每個數字按4位數格

式輸出。


輸入例子:
6767


輸出例子:
7766 - 6677 = 1089

9810 - 0189 = 9621

9621 - 1269 = 8352

8532 - 2358 = 6174


import java.util.Scanner;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String num = in.next();
        int result = 0;
        while(result!=6174){
            int left = 0;
            int right = 0;
            char[] temp = creat(num);
            char[] l = new char[4];
            Arrays.sort(temp);
            for(int i = 3;i>=0;i--){
                left = left*10+temp[i]-'0';
                right = right*10+temp[3-i]-'0';
                l[i] = temp[3-i];
            }
            if(left==right){
                System.out.println(new String(l)+" - "+new String(temp)+" = 0000");
                return;
            }
            result = left-right;
            System.out.println(new String(l)+" - "+new String(temp)+" = "+result);
            num = ""+result;
        }
    }
     
    private static char[] creat(String s){
        char[] num = new char[4];
        for(int i = 0;i<num.length;i++){
            if(i>=s.length())
                num[i] = '0';
            else
                num[i] = s.charAt(i);
        }
        return num;
    }
     
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章