一,問題描述
所謂「數字黑洞」現象,就是任意給定乙個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②horner法則得到數字:關於horner法則可參考:求冪運算、多項式乘法及horner法則的應用static
int split(int n)
return arr;
}
//四,整個**完整實現: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...