数字分组求偶数和 | 豆包MarsCode AI刷题

72 阅读1分钟

def solution(numbers): even_count = 0 # 记录偶数选择的组合数
odd_count = 0 # 记录奇数选择的组合数

# 初始情况下,没有任何选择,所以组合数为0
even_count = 1  # 初始化为1,因为至少有一种选择(即不选择任何数字)

for num in numbers:
    even = 0
    odd = 0
    str_num = str(num)

    # 统计当前数字组中的偶数和奇数  
    for ch in str_num:
        if int(ch) % 2 == 0:
            even += 1
        else:
            odd += 1

    # 更新组合数  
    new_even_count = even_count * even + odd_count * odd  # 偶数和偶数的组合 + 奇数和奇数的组合
    new_odd_count = even_count * odd + odd_count * even    # 偶数和奇数的组合

    even_count = new_even_count
    odd_count = new_odd_count

# 返回符合条件的组合数(偶数和的组合)  
return even_count  # 返回偶数和的组合数

测试用例

if name == "main": print(solution([123, 456, 789]) == 14) # 应输出 True print(solution([123456789]) == 4) # 应输出 True print(solution([14329, 7568]) == 10) # 应输出 True