PAT 乙級真題 1009 1019 數字黑洞

2021-10-03 13:39:52 字數 1089 閱讀 7907

題目描述

給定任乙個各位數字不完全相同的4位正整數,如果我們先把4個數字按非遞增排序,再按非遞減排序,然後用第1個數字減第2個數字,將得到

乙個新的數字。一直重複這樣做,我們很快會停在有「數字黑洞」之稱的6174,這個神奇的數字也叫kaprekar常數。

例如,我們從6767開始,將得到

7766 - 6677 = 1089

9810 - 0189 = 9621

9621 - 1269 = 8352

8532 - 2358 = 6174

7641 - 1467 = 6174

... ...

現給定任意4位正整數,請編寫程式演示到達黑洞的過程。

輸入格式

輸入給出乙個(0, 10000)區間內的正整數n。

輸出格式

如果n的4位數字全相等,則在一行內輸出「n - n = 0000」;否則將計算的每一步在一行內輸出,直到6174作為差出現,輸出格式見樣例,每行中間沒有空行。注意每個數字按4位數格式輸出。

輸入樣例

6767
輸出樣例
7766 - 6677 = 1089

9810 - 0189 = 9621

9621 - 1269 = 8352

8532 - 2358 = 6174

題目思路
#include#includeusing namespace std;

int * msort(int n)

,i=0;

static int b[2];

while(n!=0)

sort(a,a+4);

b[0] = a[0]*1000+a[1]*100+a[2]*10+a[3];

b[1] = a[3]*1000+a[2]*100+a[1]*10+a[0];

return b;

}int main()

printf("%d - %04d = %04d\n",b[1],b[0],b[1]-b[0]);

}while((n=b[1]-b[0])!=6174);

return 0;

}

PAT乙級真題

include includeint main char zhuan 10 sprintf zhuan,d he for int i 1 0 i 1 includeint main else if grade to else if grade includebool search int a,int...

PAT乙級 Basic Level 真題

時間限制 1000 ms 記憶體限制 32768 kb 長度限制 100 kb 判斷程式 standard 來自 小小 題目描述 給定區間 2的31次方,2的31次方 內的3個整數a b和c,請判斷a b是否大於c。輸入描述 輸入第1行給出正整數t 10 是測試用例的個數。隨後給出t組測試用例,每組...

PAT乙級真題1002

1002 寫出這個數 20 20 分 讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10 100 輸出格式 在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後乙個拼音數字後沒有空格。...