编辑代码

# coding:utf-8
#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 

def find_n_digits(n, m):
    if n < 1 or m < 1 or m > 9 * n:
        return []
    if n == 1:
        return [m] if 1 <= m <= 9 else []
    
    def generate_digits(k, s):
        """生成k位数字(0-9),和为s的所有组合(元组形式)"""
        if k == 0:
            return [()] if s == 0 else []
        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}")