# 題目描述
# 給定任乙個各位數字不完全相同的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
a = int(input())
c = a //1000
d = (a-c*1000)//100
e = (a-c*1000-d*100)//10
f = a % 10
b = [str(c),str(d),str(e),str(f)]
c = sorted(b)
b.sort()
b.reverse()
h = b[0]+b[1]+b[2]+b[3]
i = c[0]+c[1]+c[2]+c[3]
if b[0] == b[1] == b[2]==b[3]:
print("%s - %s = 0000"%(h,i))
else:
while true:
if int(h)-int(i) != 6174:
print("%s - %s = %d" % (h, i, int(h) - int(i)))
a = int(h)-int(i)
c = a // 1000
d = (a - c * 1000) // 100
e = (a - c * 1000 - d * 100) // 10
f = a % 10
b = [str(c), str(d), str(e), str(f)]
c = sorted(b)
b.sort()
b.reverse()
h = b[0] + b[1] + b[2] + b[3]
i = c[0] + c[1] + c[2] + c[3]
else:
print("%s - %s = %d" % (h, i, int(h) - int(i)))
break
1019 數字黑洞 20
pat1019 include include include include using namespace std void vector2i vector v,int sum vector轉整型 v.resize 4,0 若不滿4位,則繼續補0 reverse v.begin v.end 反轉...
1019 數字黑洞 20
時間限制 100 ms 記憶體限制 32000 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 給定任乙個各位數字不完全相同的4位正整數,如果我們先把4個數字按非遞增排序,再按非遞減排序,然後用第1個數字減第2個數字,將得到乙個新的數字。一直重複這樣做,我們很快會停...
1019 數字黑洞 20
給定任乙個各位數字不完全相同的4位正整數,如果我們先把4個數字按非遞增排序,再按非遞減排序,然後用第1個數字減第2個數字,將得到乙個新的數字。一直重複這樣做,我們很快會停在有 數字黑洞 之稱的6174,這個神奇的數字也叫kaprekar常數。例如,我們從6767開始,將得到 7766 6677 10...