3. 验证命题:任何各位数字不全相同的三位正整数经以下变换后均能变为495,称495为三位整数的黑洞数。 变换步骤:对于任意一个各位数字不全相同三位正整数,将组成该整数的3个数字重新组合分别生成一个最大数和最小数,用最大数减去最小数得到一个新的三位数;再对新的三位数重复上述操作,最多重复7次。 编写程序,接收键盘输入的一个三位正整数,判断各位数字是否不全相同,若全相同重新输入,否则实施以上变换(不超过7次),输出每步变换后得到的三位整数。
时间: 2023-05-17 20:07:25 浏览: 219
我可以回答这个问题。以下是代码实现:
```python
def is_valid(num):
"""
判断一个三位正整数各位数字是否不全相同
"""
digits = set(str(num))
return len(digits) == 3
def transform(num):
"""
对一个三位正整数进行变换,返回新的三位整数
"""
digits = sorted(str(num))
max_num = int(''.join(digits[::-1]))
min_num = int(''.join(digits))
return max_num - min_num
def black_hole(num):
"""
对一个三位正整数进行黑洞变换,输出每步变换后得到的三位整数
"""
if not is_valid(num):
print("输入的数字不符合要求,请重新输入")
return
for i in range(7):
num = transform(num)
print(num)
if num == 495:
print("已经变成黑洞数,结束变换")
break
num = int(input("请输入一个三位正整数:"))
black_hole(num)
```
输入一个三位正整数后,程序会对其进行黑洞变换,并输出每步变换后得到的三位整数。如果输入的数字不符合要求(各位数字不全相同),程序会提示重新输入。
阅读全文