📅  最后修改于: 2023-12-03 14:54:28.530000             🧑  作者: Mango
给定三个整数 A、B 和 N,以及一个目标值 M。输出所有可以通过将 A 或 B 与 N 相加精确 M 次而获得的数字。
def find_numbers(A, B, N, M):
s = set()
for a in range(M+1):
for b in range(M+1-a):
c = M - a - b
s.add(a*A + b*B + c*N)
s = sorted(s)
for num in s:
print(num)
该函数接受四个参数A、B、N、M,输出所有可以通过将A或B与N相加精确M次而获得的数字。
首先定义了一个空集合s,用于存储所有可能的组合。
然后,使用两个循环遍历所有可能的a、b和c的组合,计算出aA + bB + c*N,将其添加到集合s中。
接下来,使用sort方法对集合s进行排序,并遍历输出其中的每个元素。
因为集合自动去重,所以我们不需要担心重复的数字。