乞讨N!到底有多少0
分析:
对N质因数分解 N=2^x * 3^y * 5^z...。因为10 = 2*5,所以末尾0的个数仅仅和x与z有关,每一对2和5相乘能够得到一个10。于是末尾0的个数=min(x,z)。在实际中x是远远大于z的。所以我们仅仅要求出z的值就可以。
依据公式
z = N/5 + N/5^2 + N/5^3+...+N/5^k
这表明,5的倍数贡献了一个5,5^2的倍数又贡献了一个5...。
比方:25事实上是贡献了2个5,可是在N/5中已经贡献了一个,所以在N/5^2中再贡献一个。相同,125在N/5中贡献一个,在N/5^2中贡献一个,在N/5^3中再贡献一个,一共是3个。
代码:
public int getContinueZero(int num){
int countOfZero = 0;
while(num>0)
{
countOfZero+=num/5;
num/=5;
}
return countOfZero;
}
用相同思路解下一题:
求N!的二进制中最低位1的位置。实际上就是推断二进制末尾有多少个0,然后位置=0的个数+1。
推断二进制末尾0的个数能够用右移操作来完毕。而二进制每次右移一位相当于十进制除以2,直到除不够为止。所以归根结底就是要求N!质因数分解2的数量x。上述要求此操作5的相同数量。
版权声明:本文博主原创文章。博客,未经同意不得转载。
乞讨N!到底有多少0的更多相关文章
- 【WS-Federation】到底有多少公司在用WS-Federation
到底有多少公司在用WS-Federation? sso先调用一个登录接口 获取一个token 然后再调用各种业务接口 如果是ssl token 直接暴露就行了 没有ssl 最好每次取一个token, ...
- 到底有多少种智能指针(smart pointer)
最近Qt的blog总结了到底有多少种smart pointer, 下面是一个简要的介绍: 1. QPointer :提供对指针的保护,当一个指针被删除以后,再使用不会造成野指针或者指针溢出.比如 ...
- Spark技术内幕:一个图搞定Spark到底有多少行代码
Spark1.0.0发布一个多月了,那么它有多少行代码(Line of Code, LOC)? 注:代码统计未包含测试,sample.
- cmp的值到底是0还是1还是-1的问题
返回值不局限于这三个数返回负数,表示第一个参数小于第二个参数返回整数,表示第一个参数大于第二个参数返回0,表示他们相等
- 你对position的了解到底有多少?
此文根据Steven Bradley的<How Well Do You Understand CSS Positioning?>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之处 ...
- 一个Java字符串中到底有多少个字符?
依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 \u0000 (0),最大值是\uffff(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 ...
- 一个 Java 字符串到底有多少个字符?
来源:http://dwz.win/jqd 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 \u0000 (0),最大值是\uffff(65535), 也就是一个字 ...
- 2020年我国到底有多少程序员?现在学习java还来得及吗?
中国有多少程序员?现在还值得学java吗? 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! JAVA起于1995年,经过20多年的发展,JAVA如今已经发展成为 ...
- 电脑小知识:Windows 10是用什么语言写的?到底有多少行代码?
这是微软的内核工程师 Axel Rietschin在Quora的一个回答. Windows 10 的code base 和Windows 8.x , 7 , Vista , XP , 2000 和Wi ...
随机推荐
- 《C陷阱与缺陷》整理二
1.数组名作实參 在C语言中,我们没有办法将一个数组作为函数參数传递,假设我们使用数组名作为參数.这个时候数组名立马会被转换为指向该数组的第一个元素的指针. 关于这一点的理解能够向前深 ...
- db2 用户权限
DB2数据库权限分为实例级权限(SYSADM.SYSCTRL.SYSMAINT.SYSMON)和DB2数据库级权限(DBAMD.LOAD).DB2中用户所拥有的权限主要考虑三个方面:实例级.数 ...
- JS的预编译和执行顺序 详析
原文:JS的预编译和执行顺序 详析 最近在复习javascript的事件处理时发现了一个问题,然后也是我来写javascript的预编译和执行顺序的问题 代码: 复制代码 代码一 <ht ...
- 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...
- How to retreive raw post data from HttpServletRequest in java
public static String getPostData(HttpServletRequest req) { StringBuilder sb = new StringBuilder(); t ...
- 升级版:深入浅出Hadoop实战开发(云存储、MapReduce、HBase实战微博、Hive应用、Storm应用)
Hadoop是一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hadoop实现了一个分布式文件系 ...
- Andorid Binder进程间通信---总结
一.Server和Service Manager进程间通信 Service Manager进程启动时,已经创建了Service Manager实体对象,没有Service Manager本地对象. S ...
- Python中的继承
继承: 面向对象程序语言的一个重要特点是继承.继承提供了在已存在类的基础上创建新类的方法.继承的子类 拥有被继承的父类的所有方法,在此基础上,子类还可以添加自己的专有方法.继承是类的强有力的特点.一些 ...
- TObject简要说明-对象的创建流程
TObject = class //创建 constructor Create; //释放 procedure Free; //初始化实列 class functi ...
- 基于visual Studio2013解决面试题之0204最大子集数组
题目