# coding:utf-8#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 deffind_n_digits(n, m):if n < 1or m < 1or m > 9 * n:
return []
if n == 1:
return [m] if1 <= m <= 9else []
defgenerate_digits(k, s):"""生成k位数字(0-9),和为s的所有组合(元组形式)"""if k == 0:
return [()] if s == 0else []
digits = []
for d in range(0, min(9, s) + 1): # 当前位数字d的范围:0到min(9, s)for rest in generate_digits(k - 1, s - d):
digits.append((d,) + rest) # 拼接当前位与剩余位return digits
results = []
min_a = max(1, m - 9 * (n - 1)) # 最高位a的最小值(剩余位最大和为9*(n-1))
max_a = min(9, m) # 最高位a的最大值(a不超过m,且不超过9)for a in range(min_a, max_a + 1):
rem = m - a
rest_combinations = generate_digits(n - 1, rem)
for combo in rest_combinations:
# 将a与combo拼接成n位数(如a=1, combo=(2,3) → 123)
num = a * (10 ** (n - 1))
for i, d in enumerate(combo):
num += d * (10 ** (n - 2 - i))
results.append(num)
return results
'''xx=find_n_digits(5,4)
for x in xx:
print(x)
'''
shushu=find_n_digits(7,7)
print(*shushu,sep='\n')
lenss=len(shushu)
print(f"共有个数: {lenss}")