结尾0的个数

题目描述:

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

例如: L=[2,8,3,50],

则输出:2

最简单的就是元素全部相乘,计算末尾0的个数。但是这种暴力的解法肯定是不行的,(实际问题中)内存容易崩掉。其实最开始我一点想法都没有,参考了其他解法,做个简单记录。

思路1

既然不能相乘,那么看待问题就看透本质,这里就需要数学知识了。首先是0是怎么得到的,比如110,25,45,65,85,1010等等,想想就是原来就有10,然后再和10相乘(0的个数会增加),或者直接和其他数字相乘(0的个数不变);也可以是偶数和5相乘,偶数和5相乘,最基本的就是2*5,=10,然后其他的偶数可以分解成2和其他因子,这样其实就是10*某个因子。同时对于10*10的这种情况,也是可以分解成2*5的形式,总结起来就是2和5组成一对,这样有几对就相当于有几个0.。这样计算所有元素内因子是2和5的个数,统计出来看看有几对即可。L = [2, 8, 3, 50]

def solve_it():

num_t = 0

num_f = 0

for i in L:

temp = i

while True:

if temp % 2 == 0:

temp = temp // 2

num_t += 1

elif temp % 5 == 0:

temp = temp // 5

num_f += 1

else:

break

result = min(num_t, num_f)

return result

print(solve_it())

12345678910111213141516171819

另一种写法L = [2, 8, 3, 50]

num_t = 0

num_f = 0

for i in L:

while i % 2 == 0:

num_t += 1

i = i // 2

while i % 5 == 0:

num_f += 1

i = i // 5

result = min(num_t, num_f)

return result123456789101112

思路2

这里参考了其他的解法,个人认为不是很妥(比如出现125*8=1000特殊的情况,其实就相当于全部元素相乘了)。既然不能全部相乘,那么能不能只计算两个值的乘积,看看是否包含0,如果包含0,则去掉并计数,保留剩余部分。因为后续出现0与前面的0没有关系(因为已经计数了)。如果不含0,则保留继续相乘。def answ(a, b):

if a % 10 == 0:

a, b = a//10, b+1

a, b = answ(a, b)

else:

a = a

return a, b

a, b = 1, 0

for i in L:

a *= i

a, b = answ(a, b)

result = b

print(result)

作者:qq_42907161

链接:https://blog.csdn.net/qq_42907161/article/details/107958516

来源:CSDN

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

python去掉数字最后的零_结尾0的个数Python相关推荐

  1. python 内存溢出能捕获吗_从0基础学习Python (19)[面向对象开发过程中的异常(捕获异常~相关)]...

    从0基础学习Python (Day19) 面向对象开发过程中的=>异常 什么是异常 ​ 当程序在运行过程中出现的一些错误,或者语法逻辑出现问题,解释器此时无法继续正常执行了,反而出现了一些错误的 ...

  2. python去掉数字最后的零_python – 如何消除额外的负号,将数字四舍五入为零时,以numpy为单位?...

    你在-0之间的问题.和0.是浮动应该如何表现的规范的一部分(IEEE754).在某些情况下,需要这种区别.例如,参见 the docs for around中链接的文档. 也值得注意的是,这两个零值应 ...

  3. 零基础python必背代码-编程零基础应当如何开始学习 Python?

    学Python,最高效的方法其实就是自学+自问+实战(海伦泰勒学习法的精简版). 本文分为3大板块,不仅要帮你0基础入门,还专门写了进阶内容. 进阶内容中这51个Python的秘密,你可不一定知道. ...

  4. python是不是最简单的语言_全世界都公认运行Python的最简单方法

    Python是一种跨平台的编程语言,这意味着它可以在Windows,macOS,Linux等多种平台上运行,甚至可以移植到Java和.NET虚拟机.它是免费和开源的. 即使当今的大多数Linux和Ma ...

  5. 编程软件python怎样开始学-编程零基础应当如何开始学习 Python?

    编程零基础应当如何开始学习Python 我觉得每个人学习新东西之前脑海里应该有个大致的地图和路径 比如学习编程,首先脑海里要比较清晰的思考寻找过下面几个问题的答案什么是编程 为什么学编程 编程可以干什 ...

  6. python中不属于整数类型_哪个选项不是Python语言的整数类型?

    [单选题]下面不属于Python保留字的是: [单选题]关于Python的元组类型,以下选项错误的是: [单选题]关于整数类型的4种进制表示,哪个选项的描述是正确的? [简答题]阅读以下冒泡法排序代码 ...

  7. flask web开发:基于python的web应用开发实战_在知乎上学 Python Web 开发篇

    通知: 1. 最近我们将进行2期学习小组,面向完全零基础的Python入门学习小组已经开始,第一次任务的讨论将于明晚(15号)进行,现在上车还来得及 2. 另有一期数据可视化小组将于年前启动,第一次讨 ...

  8. python编程入门 适合于零基础朋友-《从零开始学 Python》(第二版)

    老齐 · 更新于 2018-11-28 11:00:43 <零基础学 Python>(第二版) Python 是一种面向对象.解释型计算机程序设计语言,由 Guido van Rossum ...

  9. python 自动运维架构师_运维架构师-Python 自动化运维开发-031

    *运维架构师-Python 自动化运维开发-031 十九.Python3 操作数据库 1.Python3 操作 MySQL 1.基本介绍Python3 操作 MySQL 数据库 可以使用的模块是 py ...

最新文章

  1. 如何反编译,防止反编译,常见问题总结
  2. html中属性idx区别,HTML 中的name属性和id属性有什么区别?
  3. System.Object简介
  4. 限制 计算机中 某用户上网 win7,利用win7限制上网时间的方法
  5. mysql bundle 安装_阿里云服务器下安装MySQL (Bundle压缩包 安装)
  6. 7-5 sdut-验证“哥德巴赫猜想” (10 分)(优化素数判断)
  7. KnockoutJS(4)-控制文本和外观绑定
  8. PyCharm专业版破解
  9. Fovea Box阅读学习笔记
  10. 接入网、承载网、核心网是什么,交换机路由器是什么、这个和网络的协议有什么关系呢?
  11. 第一辆定制款豪华电动汽车Battista Hyper GT揭晓
  12. unity模型制作规范
  13. 使用树莓派搭建家用 NAS
  14. .Net发布到IIS服务器,IIS服务器配置
  15. 普源DG1022U信号发生器技术参数
  16. Freebase再研究
  17. win10录屏软件哪款比较好用?一款不限时长的录屏软件
  18. python语言三大基本控制结构_【笔记】《python语言程序设计》——程序的控制结构...
  19. 从零开始的DIY智能家居 - 基于 ESP32 的智能水浊度传感器
  20. 猎头推荐成功一个人竟然收年薪一半,也太赚了吧

热门文章

  1. HTML_06(Dom(03))
  2. Java实现人民币大写+GUI界面
  3. 绝地求生刺激战场经验总结
  4. Django Ninja简单教程
  5. 介绍几个不错的.NET开源的搜索组件
  6. 计导 第 16 章 安全
  7. 一行代码将Python程序转换为图形界面应用
  8. 别在看不起女程序媛了,一个高颜值女程序媛的日常
  9. 简单的数学题 - 数论
  10. golang入门项目—日志收集