如何生成12位数字,但所有数字总和必须等于55?

时间:2014-06-15 00:10:05

标签: python

我正在生成一个12位数字,但所有加在一起的数字必须等于55。 在python中执行此操作的最佳方法是什么?我想不出任何简单的方法。 谢谢。

这是我到目前为止所尝试的内容(非常耗时):

def isValid(number);
    split = string.split(number)
    if split[0] + split[1] + split[2] + split[3] + split[4] + split[5] + split[6] + split[7] + split[8] + split[9] + split[10] + split[11] == 55:
        return True
    else:
        return False

number = random.randrange(100000000000, 999999999999)

if isValid(number):
    print number
else:
    //Keep generating numbers until you get a valid one

1 个答案:

答案 0 :(得分:1)

递归打印:

def gen_num(trailing, depth, left):
    if depth < 11:
        for i in range(max(0,min(10, left))):
            gen_num(trailing*10+i, depth+1, left-i)
    elif depth == 11:
        if left < 10:
            print trailing*10+left

for i in range(1,10):
    gen_num(i, 1, 55-i)