0X000A 结尾0的个数

给你一个正整数列表 L, 输出L内所有数字的乘积末尾0的个数。(提示:不要直接相乘,数字很多,相乘得到的结果可能会很大)。
例如: L=[2,8,3,50],
则输出:2

显然不能直接相乘。那样太傻了。
我是这么做的。遍历相乘,但是每次都将末尾是0的削掉,这样可以降低很多的复杂度。(隐隐约约感觉有更好的办法。比如只看最后一位。不过牵扯到进位之类的,感觉也不是很好弄,还不如稳妥点,这个复杂度已经可以接受了)

l = [10,10,10,20,30,5]
num = l[0]
count = 0
for i in range(1,len(l)):
    num *= l[i]
    while num%10 == 0:#减少复杂度的同时,对末尾0的个数进行统计
        count+=1
        num /= 10
print(count)

猜你喜欢

转载自blog.csdn.net/weixin_41687289/article/details/80357059