7-n!末尾有几个0
如何确定一个N!末尾有多少个零
- 622
题目:1*2*3*……*100 求结果末尾有多少个零
分析:一般类似的题目都会蕴含某种规律或简便方法的,阶乘末尾一个零表示一个进位,则相当于乘以10而10 是由2*5所得,在1~100当中,可以产生10的有:0 2 4 5 6 8 结尾的数字,显然2是足够的,因为4、6、8当中都含有因子2,所以都可看当是2,那么关键在于5的数量了那么该问题的实质是要求出1~100含有多少个5由特殊推广到一般的论证过程可得:
1、 每隔5个,会产生一个0,比如 5, 10 ,15,20.。。
2 、每隔 5×5 个会多产生出一个0,比如 25,50,75,100
3 、每隔 5×5×5 会多出一个0,比如125.
所以100!末尾有多少个零为: 100/5+100/25=20+4=24那么1000!末尾有多少个零呢?同理得: 1000/5+1000/25+1000/125=200+40+8+1=249
到此,问题解决了,但我们在学习过程中应当学会发散思维、举一反三
接着,请问N!的末尾有多少个零呢??
其实 也是同理的
N/5+N/25+……
如计算 2009! 的末尾有多少个0:2009/5 = 401
1~2009之间有 401 个数是 5 的倍数(余数省略).401/5 = 80 1~2009 之间有 80 个数是 25 的倍数.80/5 = 16 1~2009 之间有 16 个数是 125 的倍数. 16/5 = 3 1~2009 之间有 3个数是 625 的倍数. 3/5 = 0 1~2009 之间有 0 个数是 3125 的倍数. 所以, 2009! 的末尾有 401 + 80 + 16 + 3 = 500 个0. |
看下面代码:
- int fun1(int n)
- {
- int num = 0;
- while (n)
- {
- num += n / 5;
- n = n / 5;
- }
- return num;
- }
- int fun2(int n)
- {
- int num = 0;
- int i, j;
- for (i = 5; i <= n; i += 5)
- {
- j = i;
- while (j % 5 == 0)
- {
- num++;
- j /= 5;
- }
- }
- return num;
- }
此题扩展:求扩展N!的二进制表示中最低位1中的位置。相当于求质因数的2的个数。
10000的阶乘,末尾有多少个连续的零? 答案: 10000/5+10000/25+10000/125+10000/625+10000/3125=2000+400+80+16+3=2499
1到100的阶乘的和的末位数是几? 答案:3 这题找规律,1!=1; 2!=2; 3!=6; 4!=24; 5!=120;…你可以发现5的阶乘之后的末尾都是0。所以只有1到4的阶乘会产生个位数,所以1+2+6+24=33,所以答案就是3!
7-n!末尾有几个0的更多相关文章
- python之N阶乘结果末尾有几个0
算法思路:首先是算阶乘,可以使用内置函数reduce实现,其次是计算结果的末尾有几个0,可以使用除余判断 代码如下: #!/usr/bin/env python#-*-coding:utf-8-*- ...
- 关于C#的decimal浮点类型转化成字符串时末尾存在多个0
首先,对于浮点类型,double和float存在精度丢失问题,这一点在之前的一篇博文中有提到(C# double类型精度丢失问题),于是,一般时候推荐大家使用decmal,特别是涉及到一些金融计算时, ...
- 172. Factorial Trailing Zeroes -- 求n的阶乘末尾有几个0
Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in log ...
- LightOj 1138 - Trailing Zeroes (III) 阶乘末尾0的个数 & 二分
题目链接:http://lightoj.com/volume_showproblem.php?problem=1138 题意:给你一个数n,然后找个一个最小的数x,使得x!的末尾有n个0:如果没有输出 ...
- 计算阶乘n!末尾0的个数
一.问题描述 给定一个正整数n,请计算n的阶乘n!末尾所含有“0”的个数.例如: 5!=120,其末尾所含有的“0”的个数为1: 10!= 3628800,其末尾所含有的“0”的个数为2: 20!= ...
- 基于visual Studio2013解决C语言竞赛题之1043求末尾0个数
题目 解决代码及点评 /* 43. 求n!的末尾有多少个零.可以通过检查n!含有多少个10的因数来求它末尾零的个数. 因为10=2×5,在n!中含有2的因数显然多于含有5的因数. 一 ...
- 求N!末尾的0的个数(找规律+递归)
0\'s Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 计算整数n!(n的阶乘)末尾有多少个0. 输入 第一行输入一个数T代 ...
- Algorithm --> 求阶乘末尾0的个数
求阶乘末尾0的个数 (1)给定一个整数N,那么N的阶乘N!末尾有多少个0?比如:N=10,N!=3628800,N!的末尾有2个0. (2)求N!的二进制表示中最低位为1的位置. 第一题 考虑哪些数相 ...
- 求N的阶乘N!中末尾0的个数
求N的阶乘N!中末尾0的个数 有道问题是这样的:给定一个正整数N,那么N的阶乘N!末尾中有多少个0呢?例如:N=10,N=3628800,则N!的末尾有两个0:直接上干货,算法思想如下:对于任意一个正 ...
随机推荐
- MySql简单分页存储过程
BEGIN DECLARE startIndex int; select COUNT(*) INTO RecordCount from test; SET startIndex = (PageInde ...
- SpringBoot WebSocket实现
1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- 【Prism】MEF版HelloWorld
引言 Pirsm框架是由微软P & P小组设计的,用于构建组合式的WPF企业级应用,支持两个IOC容器,分别为Unity和MEF.官方地址为http://compositewpf.codepl ...
- @angular/cli项目构建--路由1
app.module.ts import {BrowserModule} from '@angular/platform-browser'; import {NgModule} from '@angu ...
- 剑指offer-7.旋转数组的最小数字
看起来不需要用二分法查找 --------------------------------------------------------- 时间限制:3秒 空间限制:32768K 热度指数:5098 ...
- New Concept English three (52)
My cousin, Harry, keeps a large curiously-shaped bottle on permanent display in his study. Despite t ...
- javascript.history.go();
转自:http://www.mikebai.com/Article/2009-11/757.html <input type=button value=刷新 onclick="wind ...
- HihoCoder1181欧拉路(Fleury算法求欧拉路径)
描述 在上一回中小Hi和小Ho控制着主角收集了分散在各个木桥上的道具,这些道具其实是一块一块骨牌. 主角继续往前走,面前出现了一座石桥,石桥的尽头有一道火焰墙,似乎无法通过. 小Hi注意到在桥头有一张 ...
- Java 输入参数并求和
题目要求: 输入若干的参数,编写一个程序求出参数的和: 程序流程: 代码: 例子:
- celery 停止执行中 task
目录 原因 解决过程 原因 因为最近项目需求中需要提供对异步执行任务终止的功能,所以在寻找停止celery task任务的方法.这种需求以前没有碰到过,所以,只能求助于百度和google,但是找遍了资 ...