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