编程题:求解数组所有元素乘积的最后两位数字
解决数组元素乘积最后两位数字的问题
问题说明
给定一个由n个整数组成的数组,输出该数组所有元素乘积的最后两位数字,且必须输出两位数字。
输入规则:第一行输入整数n(数组元素个数),第二行输入n个空格分隔的整数作为数组元素。
约束条件:1 ≤ n ≤ 100,1 ≤ arr[i] ≤ 100
核心思路
你完全不用费劲去计算整个超大的乘积(毕竟100个100相乘的数大到离谱,还容易溢出),只需要每次计算后都保留结果的最后两位就行——因为乘积的最后两位只和每个元素的最后两位有关,每次对100取模就能精准保留我们需要的部分。
另外还有两个小细节要注意:
- 如果计算过程中结果变成0了,后面再乘任何数都是0,直接提前终止循环就行,省点算力
- 最终输出必须是两位数字,哪怕结果是个位数(比如结果是5,要输出
05)
代码实现(Python)
# 读取输入 n = int(input()) nums = list(map(int, input().split())) product_last_two = 1 for num in nums: # 每次相乘后取模100,只保留最后两位 product_last_two = (product_last_two * num) % 100 # 提前终止:已经是0的话,后续计算不会改变结果 if product_last_two == 0: break # 格式化输出为两位数字,不足补前导0 print(f"{product_last_two:02d}")
示例验证
拿题目里的示例输入来测试:
2 25 10
计算过程:
- 初始
product_last_two = 1 - 1 * 25 = 25,取模100后还是25
- 25 * 10 = 250,取模100后得到50
- 格式化输出
50,和示例要求的结果一致
边界情况测试
- 数组含0的情况:输入
3 10 20 30,最终输出00 - 乘积为个位数的情况:输入
1 5,输出05 - 多元素相乘后末位非0的情况:输入
4 7 13 9 17,乘积最后两位是17,输出17
内容的提问来源于stack exchange,提问作者mihrex
相关产品推荐
相关产品推荐

