PAT 7-44 C語言練習題 黑洞數

7-44 黑洞數(20 分)

黑洞數也稱爲陷阱數,又稱“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 <stdio.h>
int main(){
int n,max,min,f=0,a,b,c,t;
scanf("%d",&n);
while(n!=495||f==0){
a=n/100;b=n/10%10;c=n%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 = c*100+b*10+a;
n = max - min;
f++;
printf("%d: %d - %d = %d\n",f,max,min,n);
}

return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章