7-6 黑洞數(20 分)

【木木】發表於2018-08-13

黑洞數也稱為陷阱數,又稱“Kaprekar問題”,是一類具有奇特轉換特性的數。

任何一個各位數字不全相同的三位數,經有限次“重排求差”操作,總會得到495。最後所得的495即為
三位黑洞數。所謂“重排求差”操作即組成該數的數字重排後的最大數減去重排後的最小數。
(6174為四位黑洞數。)

例如,對三位數207:

第1次重排求差得:720 - 27 = 693;
第2次重排求差得:963 - 369 = 594;
第3次重排求差得:954 - 459 = 495;
以後會停留在495這一黑洞數。如果三位數的3個數字全相同,一次轉換後即為0。

任意輸入一個三位數,程式設計給出重排求差的過程。

輸入格式:
輸入在一行中給出一個三位數。

輸出格式:
按照以下格式輸出重排求差的過程:

序號: 數字重排後的最大數 - 重排後的最小數 = 差值
序號從1開始,直到495出現在等號右邊為止。

輸入樣例:
123
輸出樣例:
1: 321 - 123 = 198
2: 981 - 189 = 792
3: 972 - 279 = 693
4: 963 - 369 = 594
5: 954 - 459 = 495

#include<iostream>
using namespace std;
int main()
{
	int i,max,min,num,f=0,a,b,c,t;
	cin>>num;
	while(num!=495||f==0){
		a=num/100;
		b=num/10%10;
		c=num%10;
		if(a<b) {t=a;a=b;b=t;}
		if(a<c) {t=a;a=c;c=t;}
		if(b<c) {t=b;b=c;c=t;}
		max=a*100+b*10+c; 
		min=a+b*10+c*100;
		num=max-min;
		f++;
		cout << f <<": "<< max << " - " << min << " = " << num << endl;
	}
}

 

相關文章