如果一个正整数可以被它的每个非零数字整除,我们就称它为公平的。例如,102 是公平的(因为它可以被 1 和 2 整除),但 282 不是,因为它不能被 8 整除。 给定一个正整数 n。找到最小整数 x,使得 n≤x 并且 x 是公平的。 输入格式 输出格式 一个正整数 n(1≤n≤1018) 输入输出样例 输入1 102
时间: 2024-03-27 19:37:45 浏览: 77
大于1 的正整数n可以分解为:n=x1*x2*…*xm。
5星 · 资源好评率100%
好的,这是一个比较有趣的问题。下面是解决方案:
```python
def is_fair(num):
for digit in str(num):
if digit == '0' or num % int(digit) != 0:
return False
return True
n = int(input())
x = n
while not is_fair(x):
x += 1
print(x)
```
解释一下代码:
首先定义了一个函数 `is_fair`,用来判断一个数是否是公平的。函数接受一个参数 `num`,将 `num` 转换为字符串,然后遍历字符串中的每个数字,如果遇到数字 0 或者当前数字不能整除 `num`,则返回 False,表示 `num` 不是公平的。如果遍历结束后都没有返回 False,则说明 `num` 是公平的,返回 True。
在主程序中,我们首先读入正整数 `n`,将 `x` 初始化为 `n`,然后进入一个循环,如果 `x` 不是公平的,就将 `x` 加 1,继续判断,直到找到第一个公平数为止。最后输出 `x` 即可。
希望我的回答能够帮到你!
阅读全文