📅  最后修改于: 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]
以上便是本题的完整解答。