N的阶乘末尾有多少个零?】的更多相关文章

在创联ifLab的招新问答卷上看到这么一题 核心问题是: 求N!(N的阶乘)的末尾有多少个零? 由于在N特别大的时候强行算出N!是不可能的,所以肯定要另找方法解决了. 首先,为什么末尾会有0?因为2*5 = 10,0就这么来了.所以只要求出这N!中有多少个2多少个5相乘就好了,由于2的出现次数肯定是大于5的,所以只要求有多少个5相乘就好了. 因为求的是N的阶乘,而 N! = 1*2*3*....*N 那么:这N个数中能被5整除的个数 = N / 5 比如N = 50 ,能被5整除的有 5 10…
题目一:210!最后结果有几个零. 请自己思索10分钟以上再看解释 凡是这种题目必有规律可言, 关键是你找到这个规律的恒心.可采用笨拙的方法思考. 1!  =  1                               ----  无0 2! = 2 * 1! = 2                        ----  无0 3! = 3 * 2! = 6                        ----  无0 4! = 4 * 3! = 24 5! = 5 * 4!  =…
N的阶乘(N!)中的末尾有多少个0? N的阶乘可以分解为: 2的X次方,3的Y次方,4的5次Z方,.....的成绩.由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10,于是M = MIN(X,Z),不难看出X大于Z,因为被2整除的频率比被5整除的频率高的多. 要计算Z,最直接的方法就是求出N的阶乘的所有因式(1,2,3,...,N)分解中5的指数.然后求和 int fun1(int n) { ; int i,j; ;i <= n;i += ) { j = i;…
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82974#problem/B 解题思路:这个题目就是求因子的个数, m!/((m-n)!*n!)等于m到n的阶乘除以m-n的阶乘,即求m到n中因子的个数减去m-n到1的因子的个数即可 程序代码: #include <iostream> using namespace std; int t,m,n,i; int main() { cin>>t; while(t--)…
问题:先从100!的末尾有多少零         =>    再推广到  任意N!的末尾有多少个零 分析:首先想到慢慢求解出100!或N!,但计算机表示数有限,且要防止溢出. 则从数学上分析:一个整数若含有一个因子5则必然会在求100!时产生一个零,                               问题转化为:求1到100,这100个整数中包含了多少个因子5.                                若整数N能被25整除,则N包含2个因子5,若N能被5整除,则N…
题目描述: 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2 输入描述: 输入为一行,n(1 ≤ n ≤ 1000) 输出描述: 输出一个整数,即题目所求 示例1 输入 10 输出 2 解题思路: 能被5(5^1)整除的提供1个0 能被25(5^2)整除的提供2个0 能被125(5^3)整除的提供3个0 能被625(5^4)整除的提供4个0 所以 结果= n/5 + n/25 + n/125 + n/625 #include<io…
原文地址 首先阶乘的一个常识要知道就是25!的末尾6位全是0: 前言: <编程之美>这本书,爱不释手! 问题描述: 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=362800,N!的末尾有两个0; 求N!的二进制表示中最低位1的位置. 问题1的求解: 分析: 解法一: 首先,最直接的算法当然是直接求出来N!然后看末尾有几个0就行了.但这里存在两个问题: (1)不管使用long或者double一定会产生溢出. (2)效率低下. 对于问题(1),我们可以采用字符串存储的办…
题目:哪几个数的阶乘末尾有n个0?其中n是一个正整数,从键盘输入. int main( void ) /* name: zerotail.cpp */ { int num, n, c, m; cout<<"输入零的个数(>0):"; cin>>n; ) { c=; num=; do { num+=; m=num; == ) { c++; m/=; } }while( c<n ); if( c==n ) cout<<num<<&…
Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in logarithmic time complexity. Credits:Special thanks to @ts for adding this problem and creating all test cases. 这道题并没有什么难度,是让求一个数的阶乘末尾0的个数,也就是要找乘数中10的个数,…
Given an integer n, return the number of trailing zeroes in n!. Example 1: Input: 3 Output: 0 Explanation: 3! = 6, no trailing zero. Example 2: Input: 5 Output: 1 Explanation: 5! = 120, one trailing zero. Note: Your solution should be in logarithmic…