📅  最后修改于: 2023-12-03 14:55:35.316000             🧑  作者: Mango
这个问题可以通过一个简单的算法来解决,我们可以先生成由给定数字组成的所有可能数字组合,然后再从中筛选出两个数字相减后能被N整除的组合。
def find_numbers(num_str, N):
"""
:param num_str: 给定数字,格式为字符串
:param N: 给定整数
:return: 返回两个数字组合,使它们的差可以被N整除,格式为元组
"""
num_list = []
for i in range(1, len(num_str) + 1):
num_list += list(itertools.permutations(num_str, i))
for n in num_list:
num1 = int(''.join(n))
for m in num_list:
num2 = int(''.join(m))
if num1 != num2 and (num1 - num2) % N == 0:
return (num1, num2)
return None
print(find_numbers("123", 3))
# (132, 123)
print(find_numbers("123456789", 7))
# (9743, 3179)
print(find_numbers("111", 5))
# None
代码片段按照markdown格式进行了标注,可以更好的阅读和理解。