N!末尾有多少个零
题目一:210!最后结果有几个零。
请自己思索10分钟以上再看解释
凡是这种题目必有规律可言, 关键是你找到这个规律的恒心。可采用笨拙的方法思考。
1! = 1 ---- 无0
2! = 2 * 1! = 2 ---- 无0
3! = 3 * 2! = 6 ---- 无0
4! = 4 * 3! = 24
5! = 5 * 4! = 120 有了一个零
思考这个0是怎么出现的 ------------ 5与一个偶数相乘得到的结果
这个就是规律
10! = 2*5 * 9! -------------再出现一个0
15! = 3*5 * 14! -------------再出现一个0
..
25! = 5*5 * 24! --------------这里出现两个0
125! = 5*5*5*5 *124! ---------------出现四个零
结果末尾有多少个0的问题可以转换为N!乘式中可以分解出多少个5的问题.因为5和其前面的任何一个偶数相乘都会产生0
如果口算:
在由1到N的数中共可以分解出多少个5.例如25!,可以分解出5(1×5)、10(2×5),15(3×5),25(5×5),共可以分解出5个5,所以25!末尾有5个0;
上代码:
int ZeroNum(int n)
{
int j,num=0;
for(int i=n;i>1;i--)
{
j=i;
while(j%5==0)
{
num++;
j/=5;
}
} return num;
}
很好理解了吧
题目二:1!+2!+3!+4!+……+100!最后结果个位数字是几?
好算了吧,5!以后末尾都是零,所以 为1! + 2! +3! +4! 的末位值
问题三:求N!的二进制表示中最低位1的位置?
由十进制数转换为2进制数的过程知要求求N!的二进制表示中最低位1的位置,即求乘因式中含有2的个数.
int ZeroNum(int n)
{
int j,num=0;
for(int i=n;i>1;i--)
{
j=i;
while(j%2==0)
{
num++;
j/=2;
}
} return num;
}
分析分析吧
N!末尾有多少个零的更多相关文章
- N的阶乘末尾有多少个零?
在创联ifLab的招新问答卷上看到这么一题 核心问题是: 求N!(N的阶乘)的末尾有多少个零? 由于在N特别大的时候强行算出N!是不可能的,所以肯定要另找方法解决了. 首先,为什么末尾会有0?因为2* ...
- CSU 1021 从m个不同元素中取出n (n ≤ m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元素的组合数。组合数的计算公式如下: C(m, n) = m!/((m - n)!n!) 现在请问,如果将组合数C(m, n)写成二进制数,请问转这个二进制数末尾有多少个零。
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82974#problem/B 解题思路:这个题目就是求因子的个数, m!/((m ...
- N!中末尾有多少个0
问题:先从100!的末尾有多少零 => 再推广到 任意N!的末尾有多少个零 分析:首先想到慢慢求解出100!或N!,但计算机表示数有限,且要防止溢出. 则从数学上分析:一 ...
- ACM_数论_阶乘N!的末尾有几个零 和 末尾有多少个 1 nyoj 954
原文地址 首先阶乘的一个常识要知道就是25!的末尾6位全是0: 前言: <编程之美>这本书,爱不释手! 问题描述: 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!= ...
- nefu 753 n!末尾有多少个0
Problem : 753 Time Limit : 1000ms Memory Limit : 65536K description 计算N!末尾有多少个0 input 输入数据有多组,每组1行,每 ...
- excel打开csv格式的文件,数字末尾都变成零,解决方式
excel打开csv格式的文件,数字末尾都变成零,解决方式
- N的阶乘末尾有多少个0
N的阶乘(N!)中的末尾有多少个0? N的阶乘可以分解为: 2的X次方,3的Y次方,4的5次Z方,.....的成绩.由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10 ...
- 从“n!末尾有多少个0”谈起
在学习循环控制结构的时候,我们经常会看到这样一道例题或习题.问n!末尾有多少个0?POJ 1401就是这样的一道题. [例1]Factorial (POJ 1401). Description The ...
- 求一个n!中尾数有多少个零
题目描述: 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 输入描述: 输入为一行,n(1 ≤ n ≤ 1000) 输出描述: 输出 ...
随机推荐
- [原博客] POI系列(5)
正规.严谨.精妙. -POI BZOJ 2213 : [Poi2011]Difference 如果我们每次枚举两个字母最大最小情况时,很容易想到写出代码里注释的样子.这样是26*26*n的,我们发现枚 ...
- Multiplication Puzzle
题目大致意思是:一个整数序列包含N个1~100的整数(3<=N<=100),从中取出一个数并和相邻两边的整数相乘,依次进行下去直到只剩下首尾两个数为止,求最终的得到的和的最小值.两边的数不 ...
- git stash的使用
https://git-scm.com/docs/git-stash 在git svn的时候使用,提交记录的时候,有部分文件的修改不需要commit. 在向svn进行git svn dcommit的时 ...
- Oracle SYS_CONTEXT Function
Version 11.1 Actions As SYS Note: USERENV is an Oracle provided namespace that describes the curre ...
- bzoj2333
好题,先离线把连通块变成连续的区间每次连通块合并就相当于两个区间合并这样就轻易的用线段树解决了 type node=record wh:string[]; x,y:longint; end; ..*] ...
- 深入学习JS: __doPostBack函数
在.NET中,所有的服务器控件提交到服务器的时候,都会调用__doPostBack这个函数,所以灵活运用这个函数对于我们的帮助还是很大的. 比如,在我们写程序的时候经常会需要动态的生成一些控件,最简单 ...
- ExtJS练手
Ext.onReady(function () { //给grid添加数据源 var store = new Ext.data.JsonStore({ root: 'rows', totalPrope ...
- Linux创建新用户以及useradd adduser的区别
从阿里云那弄了个机子玩玩,系统用的是Ubuntu12.04.刚等上去时候是用root登录的,首先想到的就是创建一个用户. 使用 useradd myname 发现/home目录下没有myname的家目 ...
- C语言volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据.如果没有volatile关键字,则编译器可能优化读取和存储 ...
- wxWidgets一个界面与数据分离的简单例子
/*************************************************************** * Name: MyApp.h * Purpose: Defines ...