“如何组合1, 2, 5这三个数使其和为100"(python)

题目描述:求出用1, 2, 5这三个数不同个数组合的和为100的组合个数,为了更好地理解题目目的的意思,下面给出几组可能的组合:100个1, 0个2, 和0个5, 他们的和为100; 50个1,25个2,0个5的和也为100,;50个1,25个2, 0个5的和也为100;50个1,25个2,0个5 的和也是100.

分析与解答:

方法一:暴力法

最简单的方法就是对所有的组合进行尝试,然后判断组合的结果是否满足和为100, 这些组合有如下的限制:1的个数最多为100个,2的个数最多为50个,5的个数最多为20个。实现思路为:遍历所有可能的组合1的个数x,(0<=x<=100), 2的个数y(0<=y <=50), 5的个数z(0<=z<=20), 判断x+2y+5z是否等于100,如果相等则满足条件。

def combinationCount(n):
    count = 0
    num1 = n
    num2 = n/2
    num5 = n/5
    x = 0
    while x <= num1:
        y = 0
        while y <= num2:
            z = 0
            while z <= num5:
                if x+ 2*y + 5*z == n:
                    count += 1
                z += 1
            y += 1
        x += 1
    return count


if __name__ == "__main__":
    print(combinationCount(100))

方法二:数字规律法

def combinationCount(n):
    count = 0
    m = 0
    while m <= n:
        count += (m+2)/2
        m += 5
    return int(count)

if __name__ == "__main__":
    print(combinationCount(100))

猜你喜欢

转载自blog.csdn.net/qq_42013574/article/details/89104899