编程之美----不要被阶乘吓到
任一个正整数都能分解成质数的连乘,因此求N!末尾有多少个0,等于质因数分解之后5的个数,而求5的个数可以用如下代码实现:
ret =0; while(N) {ret += N/5;N/=5; }
View Code
5的倍数贡献一个5,5的平方的倍数再贡献一个5,如此继续下去。。。。
问题二:求N!的二进制表示中最低位1的位置,等价于求N! 含有质因数2的个数加1,因为如果将N!表示成2的多少次幂乘以一个数,那么就可以表示成2的多少次幂+2的更多的次幂。于是将上面的代码稍微修改就可以用来求此问题,另外N!含有质因数2的个数,还等于N减去N的二进制表示中1的数目。假如N=11011,这些0,1都代表二进制,那么
1101(这里可以理解为N/2)+110(N/4)+11+1
=(1000 +100 +1)
+(100 +10)
+(10 +1)
+1
=(1000 +100+10+1) + (100 +10 +1)+1
=1111+111+1
=(10000-1)+(1000-1)+(10-1)+(1-1)=11011-(N二进制表示中1的个数)。
相关题目:
给定整数n,判断它是否为2的方幂。可用(n>0&&((n&(n-1))==0)求解
转载于:https://www.cnblogs.com/wen-ge/p/4082441.html
编程之美----不要被阶乘吓到相关推荐
- 编程之美系列之一——阶乘的运算
前言: 本人一直以来都对算法很有兴趣,前些日子拿到<编程之美>这本书,爱不释手,遂有意将书中的一些本人觉得较有意思的题目以及自己的心得拿出来与大家分享,共同讨论,共同进步. 需 ...
- 学习思考之《编程之美》.
一.智者说:无聊的时候来几道算法题,可以训练训练自己的思维嘛!难怪之前人家说数学好的人编程起来事半功倍,写算法的过程中真是深有体会啊!感觉就像是在做大学的高数题......本博文仅用来记录自己学习算法 ...
- PTA 基础编程题目集 6-8 简单阶乘计算 C语言
PTA 基础编程题目集 6-8 简单阶乘计算 C语言 本题要求实现一个计算非负整数阶乘的简单函数. 函数接口定义: int Factorial( const int N ); 其中N是用户传入的参数, ...
- 《编程之美》读书笔记19: 3.9 重建二叉树
<编程之美>读书笔记19: 3.9 重建二叉树 对根节点a以及先序遍历次序P和中序遍历次序I,查找a在I中的位置,将I分为两部分,左边部分的元素都在a的左子树上,右边的元素都在a的右子树上 ...
- 编程之美计算0到N中包含数字1的个数
转自:http://blog.csdn.net/hongjuntu123/article/details/8743266 有这样一个函数f(n),对于任意正整数n,它表示从 0 到 n 之间出现&qu ...
- 《编程之美》读书笔记08:2.9 Fibonacci序列
<编程之美>读书笔记08:2.9 Fibonacci序列 计算Fibonacci序列最直接的方法就是利用递推公式 F(n+2)=F(n+1)+F(n).而用通项公式来求解是错误的,用浮点数 ...
- [搜索]字符串的相似度问题-从编程之美说起
在<编程之美>之3.3讲到了计算字符串的相似度,请看下图 原文作者做了很详细的解释,有兴趣的朋友可以参考原文. 其实,总结为一点,是求两个字符的编辑距离,关于编辑距离,可以参考这儿 htt ...
- java并发编程之美-阅读记录1
1.1什么是线程? 在理解线程之前先要明白什么是进程,因为线程是进程中的一个实体.(线程是不会独立存在的) 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,线程则是进程中的 ...
- 【编程之美】金刚坐飞机问题
题目描述 现在有一架飞机要起飞,乘客们正准备按机票号码(1,2,3...,N)一次排队登机.突然来了一只大猩猩(金刚).他也有机票,但是他插队第一个登上了飞机,然后随意的选择了一个座位坐下了.根据社 ...
最新文章
- python 教程 网盘-python教程网盘
- 【洛谷】马的遍历--广度优先搜索(BFS)
- php 标题去重复思想,WordPress网站发布文章时如何防止发布重复标题的文章?
- 【opencv学习】【读取图像、视频、摄像头】
- 查询blob字段_一次注解开发实战-我使用注解对微服务的跨库查询做了封装
- VS2010 asp.net web site项目使用log4net
- 名企架构师的心声:让我一次“架”个“构”
- OpenCV对矩形填充透明颜色
- 打印控件的 frame
- 写给励志做码农的大学生
- 富士智能e7说明书_富士智能停车系统配置
- Micropython八位共阴数码管驱动模块分享
- 机会总是留给有准备的人 —— 从裁缝到码农
- 推广的euclid_欧几里得(Euclid)与拓展的欧几里得算法
- 记录六足机器人的各类参数(micropython)
- 风控Python绘图技法代码示例
- 保险丝选型8大考虑要素
- element 日期选择器 只能选择今天之前或选择今天之后的日期
- 高级信息项目管理师规划
- 一款GIF录屏小软件