172. 阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
话不多说,先上代码:
class Solution {public int trailingZeroes(int n) {int num=0;while(n>0){n/=5;num+=n;}return num;}
}
思路:一开始我想既然要求0的个数,那肯定和2和5有关(2*5=10),又因为2的个数远多于5,所以直接求n的阶乘中5的个数即可。有了一个大概的思路后就是简化算法的过程。
代码解读:上面的代码其实是利用的一个数学定理来求取的,即:在 n! 的标准分解式中质因数 p(p <= n) 的指数 h = [n/p] + [n/p^2] + …(详见《初等数论》(闵嗣鹤 严士健)函数[x], {x} 及其在数论中的一个应用一节)。这个定理用起来就是,先求n中有多少个5,再求(n/5)中有多少个5…一直求到n为0为止,再把每次除5的结果相加就是5的个数。
例:125中一共有125/5+125/5/5+125/5/5/5=25+5+1=31个5。
注意:有的小伙伴可能会问若n不是5的倍数该怎么办,这个不用担心,整数(int类型)的除法都是整除,不会出现小数,如:26中一共有26/5+26/5/5=5+1=6个5。
相关文章:

Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译
Mysql函数group_concat、find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查询出的原料结果显示为原料名称,并以逗号分隔。可通过函数g…

网站速度优化-前端篇
2019独角兽企业重金招聘Python工程师标准>>> 页面中最好不要有js片段,合并多个js为一个js,并将js压缩 (百度搜索,有在线js压缩、解压缩工具),并放在文档底部页面中最好不要有css片段,…

HashMap总结
为什么用HashMap HashMap是一个Hash桶(数组链表),桶存储的内容是键值对(Key-value)映射HashMap采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改HashMap是非synchronized,所以HashMap很快(哈哈哈)与HashT…

Blender与Substance painter制作三维手枪
你会学到: Blender和Substance painter的基础知识 建模 纹理制作 烘焙 Uv展开 Boolens和斜角修改器 如何制作游戏准备枪 课程获取:Blender与Substance painter制作三维手枪 – 云桥网络-CG技术学习平台 要求 Blender Substance painter 你好,我是3d艺术…

Java学习总结:32(Runtime类)
Runtime类 该类用于表示虚拟机(JVM)运行时的状态,每次启动JVM都对应一个Runtime实例,且只有一个实例,利用Runtime类可以启动新的进程或进行相关运行时环境的操作。此外,该类采用单例模式设计,对象不可以直接实例化。所…

转:查看系统是64位还是32位
1、getconf LONG_BIT or getconf WORD_BIT 例如: 2、file /bin/ls 例如: 查看linux的版本: 转载于:https://www.cnblogs.com/lei-lei/p/5029120.html

Redis问题——Error: 磁盘在使用中,或被另一个进程锁定。
Redis出于对数据保护,默认只能本地客户端连接。远程连接就会出现以上错误。如何解决这一问题,看下: server -A,PC-A, 修改server-A的redis.conf:注释掉本地绑定; bind 127.0.0.1 表示指定绑定本机IP&…

[转]C#索引器
索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。 1、索引器的定义 C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对…

从Java8到Java21各版本新特性详解
下面这张图是 Oracle 官方给出的 Oracle JDK 支持的时间线,可以看出,JDK 17的支持时间最长,可以延续到2029年9月。考虑到技术更新的速度,这次免费商用8年的时间可谓是经过精心考虑,旨在让用户放心地升级到JDK 17(不过JDK 8的支持时间更长,到2030年12月)。 从JDK诞生到现在,仅有几个版本得到了长期支持,主要包括JDK 7、JDK 8、JDK 11以及即将发布的JDK 17,它将是继Java 8之后最重要的LTS版本,是Java社区八年努力的成果。

make[1]: g++: Command not found
今天装了nmap软件,开始报这种错:g -c -Iliblua -Ilibdnet-stripped/include -Ilibpcre -Ilibpcap -Inbase -Insock/include -fno-strict-aliasing -DHAVE_CONFIG_H -DNMAP_NAME\"Nmap\" -DNMAP_URL\"http://nmap.org\" -DNMAP_PL…

学习如何用平板电脑设计和绘制自己的动漫角色
创造你自己的动漫人物插图 学习如何用平板电脑设计和绘制自己的动漫角色 大家好,我是Pesa,一个想把快乐和希望融入到讲述故事的插画中的插画师。一点一点地,我画出我喜欢和希望的事物的场景,它把我带到了101班。 艺术世界 艺术是…

Java学习总结:33(System类)
System类 System类的方法 No.方法类型描述1public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)普通数组粘贴操作2public static long currentTimeMillis()普通取得当前的日期时间&#x…

重磅推出:AutoProject Studio 自动化项目生成器
AutoProject Studio 自动化项目生成器 核心架构图 AutoProject Studio 自动化项目生成器是一款基于C#.Net Framework 4.0为平台自主研发、专为软件设计、开发、管理的自动化项目(代码)生成器,同时也是一个智能化软件开发平台与超高效率、超低成本的最优解决方案。 该…

2022-2028年中国基因工程药物产业市场研究及前瞻分析报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国基因工程药物行业市场行业相关概述、中国基因工程药物行业市场行业运行环境、分析了中国基…

Perl 模块安装遇到的问题解决办法
2019独角兽企业重金招聘Python工程师标准>>> 问题1:Warning (usually harmless): YAML not installed, will not store persistent state 解决办法: 官网下载:http://search.cpan.org/~mstrout/YAML-0.84/lib/YAML.pm 上传安装…

如何终止一个正在动态执行的命令
比如,我们在终端输入了top 那么它就会一直动态的运行下去。 我们怎样让它终止呢? 很简单,Ctrl C就可以了。 另外,还有一种方法, 直接按一下q也可以退出。 它们两个的效果是一样的。转载于:https://www.cnblogs.com/o8l…

绘制你的世界:探索构图和真实的深度感
MP4 |视频:h264,1920 x 1080 |音频:AAC,48 KHz,2 Ch 语言:英语中英文字幕(根据原英文字幕机译更准确)| 2h 24m |大小解压后:3.2 GB 勾画你的世界不是关于天赋,而是关于任何人都可以学习的原则和…

Java学习总结:34(对象克隆)
对象克隆 对象克隆就是对对象的复制操作,在Object类中存在一个clone()方法用于对象的克隆操作。该方法如下: protected Object clone() throws CloneNotSupportedException;我们注意到: 1.此方法使用了protected访问权限&#x…

win7下的IP-主机名映射
今天学了个技巧,win7下有个目录:C:\Windows\System32\drivers\etc该目录下有个文件:hosts在这个文件里面我们可以映射IP-主机名:127.0.0.1 localhost........格式为:IP空格主机名这样我们就可以用主机名代替IP了。转载…

Spring AOP + Redis解决重复提交的问题
Spring AOP Redis解决重复提交的问题 用户在点击操作的时候,可能会连续点击多次,虽然前端可以通过设置按钮的disable的属性来控制按钮不可连续点击,但是如果别人拿到请求进行模拟,依然会出现问题,项目是用JWT进行认证…

转:Flash 插件面板 DragonBonesDesignPanel 的绿色安装方法
最近在cocos2d-js下捣腾Dragonbones。转一个文章,大家可以参考安装Dragonbones。关于这个Dragonbones,5月份的时候还用得好好的,cocos2d-js还能妥妥的加载。最近就不行了,原来默默的升级了。还是得找回原来的2.0版本,后…

任务18:控制反转
控制反转 实现你的依赖,采用什么依赖,不由你自己决定,这个控制交给IOC容器。 这里所有的实现都不由你自己决定,我们只需要传给你就可以了。谁来传呢?容器来传给他 内存的Repository,这里实现的比较简单。 这…

Quixel megascans模型材质贴图合集包
Quixel megascans是一个在线高分辨率扫描模型和贴图库,一致的PBR校准的表面,植被,和三维扫描模型,还包括用于管理的桌面应用、混合和输出你的扫描数据的程序。它的产品已经与游戏和电影工作室合作。 quixel megascans可以帮助您创…

Java学习总结:35(数字操作类)
Java的数字操作类 一.Math类 Math类是一个专门用来进行数学计算的操作类,它提供了一系列的数学计算方法。在Math类里面提供的一切方法都是static型方法,所以可以直接由类名称进行调用。 例:观察四舍五入操作 package Project.Study.MathC…

STL笔记(5)条款49:学习破解有关STL的编译器诊断信息
STL笔记(5)条款49:学习破解有关STL的编译器诊断信息 条款49:学习破解有关STL的编译器诊断信息 用一个特定的大小定义一个vector是完全合法的, vector<int> v(10); // 建立一个大小为10的vector而string在很多…

执子之手,与子偕老。你同意么?
(1):5岁的时候,我说我爱你。你歪着脑袋,眨着水晶般的大眼睛,疑惑地问我:“什么意思呀?” (2):15岁的时候,我说:"我爱你".你的脸红得像火烧云,头深深地低着,摆弄著衣襟&…

34种墨西哥植物模型 Globe Plants – Bundle 34 Mexican Plants
Globe Plants Bundle 34墨西哥植物(3D模型)包括15种3D树木、灌木和肉质植物,用于南美洲的风景、住宅、花园和一般景观美化目的,特别是墨西哥,具有85种独特的照片逼真质量的3D植物模型,具有多种形式,可用于您的许多场景…

Java学习总结:36(日期处理类)
日期处理类 Date类 Date类常用方法 No.方法类型描述1public Date()构造实例化Date类对象2public Date(long date)构造将数字变为Date类对象,long为日期时间数据3public long getTime()普通将当前的日期时间变为long型 例:取得当前的日期时间 package…
最强的篮球队和马尔可夫模型
打篮球经常遇到这种情况,11个人,分4、4、3共三套,一群人少时间玩,在一个失败的团队的人下阵来填补空缺。因此,我认为,,会不会出现一个最强组合,使得这4个人一直赢比赛呢?…

1677: [Usaco2005 Jan]Sumsets 求和
1677: [Usaco2005 Jan]Sumsets 求和 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 626 Solved: 348[Submit][Status]Description Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that ar…