2024.5.11
【题目描述】1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。请编写程序验证这个猜想。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
【输入格式】在一行中输入一个任意各位数字不相同的4位数。
【输出格式】验证6174猜想,输出过程中计算得到的各数,数据间以空格为间隔。
【输入样例】2694
【输出样例】2694 7173 6354 3087 8352 6174
def kaprekar_process(num):
# 循环直到得到6174
while num != 6174:
# 将数字转换为字符串,方便进行操作
num_str = str(num)
# 将数字字符串补齐到4位,不足的高位用'0'填充
while len(num_str) < 4:
num_str = '0' + num_str
# 将数字字符串按照非递减顺序排序得到最小数和最大数
min_num = int(''.join(sorted(num_str)))
max_num = int(''.join(sorted(num_str, reverse=True)))
# 计算差值并更新num
num = max_num - min_num
# 输出当前数
print(num, end=' ')
# 输入一个任意各位数字不相同的4位数
num = int(input("Enter a 4-digit number with distinct digits: "))
# 验证6174猜想并输出过程中计算得到的各数
print(num, end=' ')
kaprekar_process(num)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通