原题链接:PTA | 程序设计类实验辅助教学平台
Tips:以下Python代码仅个人理解,非最优算法,仅供参考!
测试点0和2,滑到底看文末!
def process(_n):
ls=[]
for i in str(_n).zfill(4):
ls.append(int(i))
ls.sort(reverse=True)
ls1=sorted(ls)
a1 = int(str(ls[0])+str(ls[1])+str(ls[2])+str(ls[3]))
a2 = int(str(ls1[0])+str(ls1[1])+str(ls1[2])+str(ls1[3]))
print(f'{str(a1).zfill(4)} - {str(a2).zfill(4)} = {str(a1-a2).zfill(4)}')
return a1-a2
def main():
_n = input().zfill(4)
if _n[0] == _n[1] == _n[2] == _n[3]:
print(f'{str(_n).zfill(4)} - {str(_n).zfill(4)} = 0000')
return
end = process(_n)
while end != 6174:
end = process(end)
main()

测试点0(输入:0)
输入:
0
输出:
0000 - 0000 = 0000
测试点2(输入:10)
输入:
10
输出:
1000 - 0001 = 0999
9990 - 0999 = 8991
9981 - 1899 = 8082
8820 - 0288 = 8532
8532 - 2358 = 6174
338

被折叠的 条评论
为什么被折叠?



