非昇順で最初の4つの数字は、その後、非降順にして、最初の桁を使用して、第2の数を引く、あなたは新しいデジタルを取得する場合、同一でない4つの正の整数の桁数のいずれかを考えます、すぐに駐車され、そうすることを繰り返し、「デジタルブラックホール、」6147、マジックナンバーとも呼ばれKaprekar定数は語りました。
例えば:
6767
7766から6677まで= 1089
9810から0189 = 9621
9621〜1269 = 8352
8532から2358まで= 6174
//デジタルブラックホール の#include <iostreamの> する#include <アルゴリズム> 使用して名前空間STD; BOOL CMP(int型、int型B) { 戻りA> B; //ソート降順CMP } ボイドto_arry(N-INT、INT NUM []) { (; Iは<4; I = 0をint型Iは++)のため// N堆積されるアレイの各ビットに対して 、{ NUM [I]、N = 10%; N / A = 10; } } int型TO_NUMBER(INT NUM [ ])//デジタルへの配列の内容 { int型SUM = 0; 私は<4;のための(I = 0 int型。私は++) { SUM = SUM * 10 + NUM [I]; } 戻りSUM; } int型メイン( ) { MINとMAXが昇順と最大値とを取得する降順を表す//最小 INT N-、MIN、MAX、 CIN N - >>; [5] INT NUM; 一方(1)。 { to_arry(N、NUM)。 ソート(NUM、NUM + 4)。 MIN = TO_NUMBER(NUM); //获取最小值 ソート(NUM、NUM + 4、CMP)。 MAX = TO_NUMBER(NUM)。 N = MAX-MIN。 printf( "%04d-%04D =%04D \ n"は、MAX、MIN、N)。 IF(N == 0 || N == 6174)ブレーク。 } 0を返します。 }