PAT B1019 / A1069デジタルブラックホール

非昇順で最初の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を返します。
}

  

おすすめ

転載: www.cnblogs.com/chuxinbubian/p/11620268.html