A30303.【PY】奇怪的加法二
2024-10-25 14:52:13
发布于:浙江
def digit_sum(num):
"""计算一个数的各个位数之和"""
return sum(int(digit) for digit in str(num))
def digit_product(num):
"""计算一个数的各个位数之积"""
product = 1
for digit in str(num):
product *= int(digit)
return product
def custom_sum(sequence):
"""根据规则计算序列的和"""
total_sum = 0
for num in sequence:
if num % 2 == 1: # 奇数
mi = digit_sum(num)
if mi % 2 == 1:
total_sum += num * mi
else:
total_sum += num // mi
else: # 偶数
si = digit_product(num)
if si > num:
total_sum += si
else:
total_sum += num
return total_sum
# 读取输入
n = int(input())
sequence = [int(input()) for _ in range(n)]
# 计算并输出结果
result = custom_sum(sequence)
print(result)
digit_sum(num)
功能: 计算一个数的各个位数之和。
实现: 将数字转换为字符串,然后遍历每个字符,将其转换回整数并求和。
def digit_sum(num):
"""计算一个数的各个位数之和"""
return sum(int(digit) for digit in str(num))
digit_product(num)
功能: 计算一个数的各个位数之积。
实现: 将数字转换为字符串,然后遍历每个字符,将其转换回整数并累乘。
def digit_product(num):
"""计算一个数的各个位数之积"""
product = 1
for digit in str(num):
product *= int(digit)
return product
custom_sum(sequence)
功能: 根据规则计算序列的和。
实现: 遍历序列中的每个数字,根据其奇偶性分别处理:
如果是奇数,计算其各个位数之和 (mi),如果 mi 是奇数,则将该数乘以 mi 加到总和中;否则,将该数除以 mi 加到总和中。
如果是偶数,计算其各个位数之积 (si),如果 si 大于该数,则将 si 加到总和中;否则,将该数加到总和中。
def custom_sum(sequence):
"""根据规则计算序列的和"""
total_sum = 0
for num in sequence:
if num % 2 == 1: # 奇数
mi = digit_sum(num)
if mi % 2 == 1:
total_sum += num * mi
else:
total_sum += num // mi
else: # 偶数
si = digit_product(num)
if si > num:
total_sum += si
else:
total_sum += num
return total_sum
主程序
功能: 读取输入,调用 custom_sum 函数计算结果并输出。
实现: 从标准输入读取一个整数 n,表示序列的长度,然后读取 n 个整数作为序列,最后调用 custom_sum 计算并输出结果。
# 读取输入
n = int(input())
sequence = [int(input()) for _ in range(n)]
# 计算并输出结果
result = custom_sum(sequence)
print(result)
- 使用示例
假设输入如下:
3
123
456
789
执行过程如下:
digit_sum(123) 返回 6(1 + 2 + 3)。
digit_product(456) 返回 120(4 * 5 * 6)。
digit_sum(789) 返回 24(7 + 8 + 9)。
对于序列 [123, 456, 789]:
123 是奇数,digit_sum(123) 为 6,因为 6 是偶数,所以结果是 123 // 6 = 20.
456 是偶数,digit_product(456) 为 120,因为 120 > 456,所以结果是 120.
789 是奇数,digit_sum(789) 为 24,因为 24 是偶数,所以结果是 789 // 24 = 33.
最终结果为 20 + 120 + 33 = 173。
- 注意事项
确保输入的数字都是有效的整数。
注意整数除法与浮点数除法的区别,在 Python 中 // 表示整数除法。
当输入的序列长度为零时,程序应能正确处理并返回零。
这里空空如也
有帮助,赞一个