演示數字黑洞現象

2021-09-22 09:08:03 字數 1113 閱讀 9826

一,問題描述

所謂「數字黑洞」現象,就是任意給定乙個4位正整數,將組成該正整數的4個數字先按非遞減順序排序,得到乙個數稱為large;再將這4個數字按非遞增順序排序,得到另乙個數,稱為small。然後,將large減去small,得到乙個新的數字。當然,其它位數的也存在著這個現象,具體可參考:數字黑洞

將這個新的數字重複上面的處理,很快就會停在有「數字黑洞」之稱的 6174 這個數上。這個數也稱為kaprekar常數。

二,舉例說明

比如,輸入6767,其演示結果如下:

7766 - 6677 = 1089

9810 - 0189 = 9621  ----將新得到的數 1089 進行非遞減及 非遞增排序後,分別得到 9810 和 0189(189)

9621 - 1269 = 8352

8532 - 2358 = 6174

三,核心思路分析

這個問題的核心過程是:將數字分解成各個位,然後按非遞增或非遞減排序,再得到排序後的數字。

數字分解的話,可以用求餘 和 除法。排序的話,可以用arrays.sort(int arr)。得到排序後的數字,其實就是horner法則。

①數字分解:

private 

static

int split(int n)

return arr;

}

②horner法則得到數字:關於horner法則可參考:求冪運算、多項式乘法及horner法則的應用

//

1089-->9810, arr是從小到大的有序陣列

private

static

int tolarge(int arr)

return result;}//

1089 --> 189 arr是從小到大的有序陣列

private

static

int tosmall(int arr)

return result;

}

四,整個**完整實現:

1019 數字黑洞

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

PAT 數字黑洞

數字黑洞 20 時間限制 1000 ms 記憶體限制 32768 kb 長度限制 100 kb 判斷程式 standard 來自 小小 題目描述 給定任乙個各位數字不完全相同的4位正整數,如果我們先把4個數字按非遞增排序,再按非遞減排序,然後用第1個數字減第2個數字,將得到 乙個新的數字。一直重複這...

1019 數字黑洞

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