【数论】nefu118 n!后面有多少个0】的更多相关文章

就是求n!有多少个因子2和因子5,并在这两者中取较小者.因为必须要一个2和一个5才能拼出1个10. 显然2的数量多于5,因此只需要求n!有多少个因子5即可. n!中素因子p的个数= [n/p]+[n/p^2]+... 证明比较显然,因为n/p就是小于等于n的数中,有多少个能整除p的. 然后这个就是把含有p的个数,含有p^2的个数,...一加起来就行了. #include<cstdio> using namespace std; typedef long long ll; int T,n,ans…
http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=118 求n!后面有多少个0(1<=n<=1000000000),显然,n!肯定存不下. 2*5=10,所以有多少个2*5就有多少个0,所以只须求n!中因子2和因子5的个数.根据结论有 f(2) = [ n / 2 ] + [ n / 4 ] + [ n / 8 ] + …… f(5) = [ n / 5 ] + [ n / 25 ] + [ n / 125 ] + ………
Problem : 753 Time Limit : 1000ms Memory Limit : 65536K description 计算N!末尾有多少个0 input 输入数据有多组,每组1行,每行1个数N(10 <= N <=100000000) output 在一行内输出N!末尾0的个数. sample_input 10 100 sample_output 2 24 举例分析一下公式~~摘自baidu 正好看过这个的算法,2*5=10,在一个数N中,因子2出现的次数总比5出现的次数多,…
首先给出一个性质: n!的素因子分解中的素数p的幂为:[ n / p ] + [ n / p² ] + [ n / p³ ] + …… 举例证明: 例如我们有10!,我们要求它的素因子分解中2的幂: 那么,根据公式有 [ 10 / 2 ] + [ 10 / 4 ] + [ 10 / 8 ] (后面例如[10/16]之类的都为0): 显然[ 10 / 2 ] = 5,代表了从1~10中有几个数是2的倍数:2,4,6,8,10:它们每个数都为10!提供了1个2: 之后[ 10 / 4 ] = 2,代…
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;…
/** 题目:Trailing Zeroes (III) 链接:https://vjudge.net/contest/154246#problem/N 题意:假设n!后面有x个0.现在要求的是,给定x,要求最小的n: 思路:判断一个n!后面有多少个0,通过n/5+n/25+n/125+... */ #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #includ…
n!后面有多少个0 Time Limit 1000ms Memory Limit 65536K description 从输入中读取一个数n,求出n! 中末尾0的个数. input 输入有若干行.第一行上有一个整数m.指明接下来的数字的个数.然后是m行,每一行包括一个确定的正整数n,1<=n<=1000000000. output 对输入行中的每个数据n,输出一行,其内容是n!中末尾0的个数. sample_input 3 3 100 1024 sample_output 0 24 253 考…
在学习循环控制结构的时候,我们经常会看到这样一道例题或习题.问n!末尾有多少个0?POJ 1401就是这样的一道题. [例1]Factorial (POJ 1401). Description The most important part of a GSM network is so called Base Transceiver Station (BTS). These transceivers form the areas called cells (this term gave the…
 题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php Mean: 略. analyse: 刚开始想了半天都没想出来,数据这么大,难道是有什么公式? 首先我们要知道一点:n!里面所有的0都是2*5得来的,而且不管怎样2的数量一定是>5的数量,所以我们只需要考虑有多少个5就可. 后面也是看了解题报告才知道有这么一个结论. 这是算数基本定理的一个结论: n!的素因子分解中的素数p的幂为:[n/p]+[n/p^2]+[n/p^3]+... 知道…
问题:先从100!的末尾有多少零         =>    再推广到  任意N!的末尾有多少个零 分析:首先想到慢慢求解出100!或N!,但计算机表示数有限,且要防止溢出. 则从数学上分析:一个整数若含有一个因子5则必然会在求100!时产生一个零,                               问题转化为:求1到100,这100个整数中包含了多少个因子5.                                若整数N能被25整除,则N包含2个因子5,若N能被5整除,则N…
方法一:假设N!=K*10M,K不能被10整除,那么N!尾数就有M个0.再对N!进行质因子分解:N!=2x*3y*5z...由于10=2*5,即每一对2和5相乘都可以得到1个0,所以M只与指数x.z有关,并且M=min(x,z)(x,z分别为N!的中因子2,因子5的个数).因为N!中每两个数字就有一个数为2的倍数,即每5个数中(最后一个数为5的倍数)至少有2个数为2的倍数,而只有最后一个数为5的倍数,所以可知因子为2的个数一定不小于因子为5的个数(x>=z),即M=z.因此,我们只需统计N!中因…
https://vjudge.net/problem/UVA-11038 题意: 输入两个非负整数m和n,求将m~n的所有整数写出来,一共要写多少个数字0? 思路: 举个例子来说: 12345 从右到左分析各位为0的情况: 最先分析各位5,在它左边是1234,所以当各位为0时,左边可以是0~1234的任何一个数,此时有1234种情况 接下来十位4,在它左边是123,右边可以是0~9的任何一个数,此时为123×10种情况 可以发现每一位的情况数为left×10^i(i为右边的数字个数) 注意:如果…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1124 Problem Description The most important part of a GSM network is so called Base Transceiver Station (BTS). These transceivers form the areas called cells (this term gave the name to the cellular phon…
数字的末尾为0实际上就是乘以了10,20.30.40其实本质上都是10,只不过是10的倍数.10只能通过2*5来获得,但是2的个数众多,用作判断不准确. 以20的阶乘为例子,造成末尾为0的数字其实就是5.10.15.20. 多次循环的n,其实是使用了多个5的数字,比如25,125等等. n/5代表的是有多个少含5的数,所以不是count++,而是count += n/5 class Solution { public: int trailingZeroes(int n) { ; while(n)…
题意: n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0.   Input 一个数N(1 <= N <= 10^9) OutPut 输出0的数量 思路: 一个0只能由2*5得到.统计N!中2的个数和5的个数,取少的.即求N!中5的个数.[数论:[N/5]+[N/5^2]+[N/5^3]+[N/5^4]+....]{也自己分析也可以得出此结论} 代码: int main(){ int n; cin >> n; ll ans=0; ll t…
分析: 对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中再贡献一个.…
原文地址 首先阶乘的一个常识要知道就是25!的末尾6位全是0: 前言: <编程之美>这本书,爱不释手! 问题描述: 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=362800,N!的末尾有两个0; 求N!的二进制表示中最低位1的位置. 问题1的求解: 分析: 解法一: 首先,最直接的算法当然是直接求出来N!然后看末尾有几个0就行了.但这里存在两个问题: (1)不管使用long或者double一定会产生溢出. (2)效率低下. 对于问题(1),我们可以采用字符串存储的办…
点击打开链接 阶乘的0 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 计算n!的十进制表示最后有多少个0 输入 第一行输入一个整数N表示测试数据的组数(1<=N<=100) 每组测试数据占一行,都只有一个整数M(0<=M<=10000000) 输出 输出M的阶乘的十进制表示中最后0的个数 比如5!=120则最后的0的个数为1 样例输入 6 3 60 100 1024 23456 8735373 样例输出 0 14 24 253 5861 218383…
http://www.matrix67.com/blog/archives/3985 神秘常量复出!用0x077CB531计算末尾0的个数 大家或许还记得 Quake III 里面的一段有如天书般的代码,其中用到的神秘常量 0x5F3759DF 究竟是怎么一回事,着实让不少人伤透了脑筋.今天,我见到了一段同样诡异的代码.下面这个位运算小技巧可以迅速给出一个数的二进制表达中末尾有多少个 0 .比如, 123 456 的二进制表达是 1 11100010 01000000 ,因此这个程序给出的结果就…
描述 计算n!的十进制表示最后有多少个0 输入 第一行输入一个整数N表示测试数据的组数(1<=N<=100)每组测试数据占一行,都只有一个整数M(0<=M<=10000000) 输出 输出M的阶乘的十进制表示中最后0的个数比如5!=120则最后的0的个数为1 样例输入 6 3 60 100 1024 23456 8735373 分析: http://www.cnblogs.com/hansongjiang/archive/2014/05/06.html 0来源于2*5,且将N!中分…
题目一:210!最后结果有几个零. 请自己思索10分钟以上再看解释 凡是这种题目必有规律可言, 关键是你找到这个规律的恒心.可采用笨拙的方法思考. 1!  =  1                               ----  无0 2! = 2 * 1! = 2                        ----  无0 3! = 3 * 2! = 6                        ----  无0 4! = 4 * 3! = 24 5! = 5 * 4!  =…
0\'s Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 计算整数n!(n的阶乘)末尾有多少个0. 输入 第一行输入一个数T代表測试数据个数(T<=20).接下来T行每行1个数代表n(0<=n< 2^31). 输出 对于每一个測试数据输n!末尾有多少个0,每行输出一个结果. 演示样例输入 3 1 5 10 演示样例输出 0 1 2 提示   中国海洋大学第三届"朗讯杯"编程比赛高级组试题  声明…
http://codeforces.com/contest/2/problem/B 题目大意:给你一个n*n的矩形,问从(1,1)出发到(n,n),把图中经过的所有的数字都乘在一起,最后这个数字有多少个0? 思路:经过分析,只有2和5出现的时候才会有0.所以我们预处理把这个数包含的所有的2和5都给拿出来就好了.但是我发现如果每次转移都要统计2和5的个数的话,状态就炸了,所以我只想到了这里TAT.后来看了一下题解以后发现,只需要知道目前到这个位置以后最小的2(或5)的个数就好了. 然后转移我也想了…
阶乘的0 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 计算n!的十进制表示最后有多少个0   输入 第一行输入一个整数N表示测试数据的组数(1<=N<=100)每组测试数据占一行,都只有一个整数M(0<=M<=10000000) 输出 输出M的阶乘的十进制表示中最后0的个数比如5!=120则最后的0的个数为1 样例输入 6 3 60 100 1024 23456 8735373 样例输出 0 14 24 253 5861 2183837 令f(…
1001 数组中和等于K的数对 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0,8),(2,6),(3,5).   Input 第1行:用空格隔开的2个数,K N,N为A数组的长度.(2 <= N <= 50000,-10^9 <= K <= 10^…
1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0.   Input 一个数N(1 <= N <= 10^9) Output 输出0的数量 Input示例 5 Output示例 1题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1003编程之…
求阶乘末尾0的个数 (1)给定一个整数N,那么N的阶乘N!末尾有多少个0?比如:N=10,N!=3628800,N!的末尾有2个0. (2)求N!的二进制表示中最低位为1的位置. 第一题 考虑哪些数相乘能得到10,N!= K * 10M其中K不能被10整除,则N!末尾有M个0. 对N!进行质因数分解: N!=2X*3Y*5Z…,因为10=2*5,所以M与2和5的个数即X.Z有关.每一对2和5都可以得到10,故M=min(X,Z).因为能被2整除的数出现的频率要比能被5整除的数出现的频率高,所以M…
阶乘的0 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 计算n!的十进制表示最后有多少个0   输入 第一行输入一个整数N表示测试数据的组数(1<=N<=100)每组测试数据占一行,都只有一个整数M(0<=M<=10000000) 输出 输出M的阶乘的十进制表示中最后0的个数比如5!=120则最后的0的个数为1 样例输入 6 3 60 100 1024 23456 8735373 样例输出 0 14 24 253 5861 2183837 #in…
n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. 收起   输入 一个数N(1 <= N <= 10^9) 输出 输出0的数量 输入样例 5 输出样例 1 ------------------------------------------------------------------------------------可以统计2的个数和的个数.编程之美有讲:一个数 n 的阶乘末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5…
参考自:https://blog.csdn.net/qq_38200548/article/details/80688630 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 1.必须在原数组上操作,不能拷贝额外的数组. 2.尽量减少操作次数. package suanfa; public class demo2 { public static void main(String[] args) { //随便定义一个数组 int[] arr={1,2,0,3,0,…