📌  相关文章
📜  具有被给定数字整除的偶数和奇数位数字之和的N位数字的计数(1)

📅  最后修改于: 2023-12-03 15:36:48.283000             🧑  作者: Mango

题目介绍

本题给定一个N位的数字,要求计算:

  • 该数字中偶数位数字之和
  • 该数字中奇数位数字之和
  • 能被该数字整除的偶数之和
  • 能被该数字整除的奇数之和

输入

本题输入为一个N位数字,N<=18。

输出

程序需要输出一个列表,包含四个数字,分别对应偶数位数字之和、奇数位数字之和、能被该数字整除的偶数之和、能被该数字整除的奇数之和。

解题思路

由于数字最大为18位,因此可以直接将其存放到一个长整型变量中。

然后,我们可以通过不断对10取模和整除10来计算出数字的每一位(从低位到高位)。

接着,我们可以分别统计奇数位和偶数位的数字之和,并判断能否被给定数字整除。最后将结果返回即可。

代码实现

def digit_count(n):
    even_sum = 0 # 偶数位数字之和
    odd_sum = 0 # 奇数位数字之和
    even_divisor_sum = 0 # 能被该数字整除的偶数之和
    odd_divisor_sum = 0 # 能被该数字整除的奇数之和
    i = 0 # 记录当前位数
    divisor = int(n) # 转换为整数类型

    while divisor > 0:
        digit = divisor % 10
        if i % 2 == 0:
            even_sum += digit
            if digit > 0 and int(n) % digit == 0:
                even_divisor_sum += digit
        else:
            odd_sum += digit
            if digit > 0 and int(n) % digit == 0:
                odd_divisor_sum += digit

        i += 1
        divisor //= 10

    return [even_sum, odd_sum, even_divisor_sum, odd_divisor_sum]

以上便是本题的完整解答。