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

考查的素数基本定理的性质,素数基本定理:每一个大于1的正整数n都能被唯一地写成素数的乘积,在乘积中的素因子依照非降序排列。n=(p1^a1)*(p2^a2)*.....*(pk^ak).

n!

的素因子分解中的素数p的幂为: [n/p]+[n/p^2]+[n/p^3]+.........

再看这个题,说n!

后面有几个0。显然我们不能算出n。。所以我们得找特征。

对于随意一个正整数。若对其进行因式分解,那么其末尾的0必定能够分解成2*5,所以每个0必定和一个5相应,但同一时候还须要有2才行。而对于n!,在因式分解中,因子2的个数要比因子5的个数多,所以假设存在一个因子5,那么它必定相应着n!末尾的一个0,那么本题就变为求n!的分解中因子5的个数,那么上面的公式就派的上用场了。

代码例如以下:

#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{int i,j,s,n;int cas,ans,t;scanf("%d",&cas);while(cas--){scanf("%d",&n);s=5;ans=0;t=n/5;while(t!=0){ans+=t;s*=5;t=n/s;}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/liguangsunls/p/6751536.html

nefu 118 n!后面有多少个0 算数基本定理,素数分解相关推荐

  1. 数论 - 算数基本定理的运用 --- nefu 118 : n!后面有多少个0

    题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php Mean: 略. analyse: 刚开始想了半天都没想出来,数据这么大,难道是有什么公 ...

  2. nefu 753 n!末尾有多少个0

    Problem : 753 Time Limit : 1000ms Memory Limit : 65536K description 计算N!末尾有多少个0 input 输入数据有多组,每组1行,每 ...

  3. (5)因数分解与算数基本定理

    因数分解与算数基本定理 素数是这样的整数 p ≥ 2 p\geq2 p≥2,它的(正)因数仅有1与p.不是素数的整数 m ≥ 2 m\geq2 m≥2叫做合数.例如, 素 数 2 , 3 , 5 , ...

  4. N的阶乘末尾有多少个0

    例如:N = 5,N! = 120.末尾有1个0. 分析:想到这个问题,有人可能第一反应就是现求出N!,然后再根据求出的结果,最后得出N!的末尾有多少个0.但是转念一想,会不会溢出,等等. 其实,从& ...

  5. 每天一道LeetCode-----计算n的阶乘末尾有多少个0

    Factorial Trailing Zeroes 原题链接Factorial Trailing Zeroes 计算n!(n的阶乘)末尾有多少个0 思路: 0实际上来源于10,而10来源于2×5,所以 ...

  6. 编程之美3——N!末尾有多少个0

    因为n!是一个非常大的数,所以不能通过常规的方法,求出n!的值之后,再判断它的末尾有多少个0. 这里的关键就是,n!的末尾有多少个0,取决于n!中,质因数 5 的个数. 如:12!=479001600 ...

  7. 1*2*...*1000的末尾有多少个0?(Java实现)

    /** * 算法描述: * 分解质因数,即: * 1*2*3*...*1000 = (2*5)*(2*5)*...*(2*5)                     *(没有匹配的2或5) //其实 ...

  8. 如何判断1024!末尾有多少个0

    分析: 方法一:暴力法   简单的方法就是就算出1024!的值,然后判断末尾有多少个0.但是这种方法有两个非常大的缺点:第一算法效率非常低下:第二:当这个数字比较大的时候直接计算阶乘可能会导致数据溢出 ...

  9. 判断N!末尾有多少个0

    问题:N的阶乘(N!)中的末尾有多少个0? 例如: N = 5,N! = 120.末尾有1个0. N = 10,N! = 3628800.末尾有2个0. 分析:看到这个问题,有人可能第一反应是先求出N ...

最新文章

  1. 甲方乙方和站在外包中间的你 | 每日趣闻
  2. usaco The Castle(flood fill)
  3. G.Fast应用将开启 中国光进铜退没白干
  4. 笔记本蓝牙显示输入码无效_小白笔记本连接蓝牙设备进阶篇
  5. 关于VC网络编程中用 char 发送结构体的说明
  6. 2014多校第一场A题 || HDU 4861 Couple doubi
  7. java io null异常_大量java.lang.InterruptedException: null异常,数据没有同步
  8. MapReduce源代码浅析
  9. NullPointerException : HiveAuthorizerImpl.checkPrivileges(HiveAuthorizerImpl.java:85)
  10. Shell脚本学习-阶段二十六-Web服务与端口
  11. Qt在VS2012中引用QtWidgets时报GLES2/gl2.h无法打开错误的解决办法
  12. 计算机软件实习项目四 —— 校园一卡通管理系统 (代码实现) 12-27
  13. 多家银行手机转账现高危漏洞 ,用户资金或被非法窃取
  14. 中台实践:数据中台建设五步法
  15. 中国移动为挽留用户!推出20元不限量套餐,你会为之买单吗
  16. php-fpm 重启失败,php-fpm启动失败
  17. 严格校验身份证,最后一位如果是X 需大写
  18. 前端资深技术专家苏千的“三迁”故事
  19. 解决Ubuntu16.04下wingide6.1无法用五笔输入中文的问题
  20. MapReduce最佳成绩统计,男生女生比比看

热门文章

  1. java语言与www技术形成性考核册_电大Java语言与WWW技术形成性考核程序题
  2. python【蓝桥杯vip练习题库】ALGO-189 P0505(阶乘问题)
  3. Python程序设计题解【蓝桥杯官网题库】 DAY5-基础练习
  4. ListView控件
  5. DB2数据库备份转成MySQL_DB2 数据库备份(集中化)
  6. 小程序的前端坑(持续更新)
  7. 网站建设前的准备工作你了解多少?
  8. 网站外链优化布局和新增技巧介绍!
  9. debain apt oracle jdk,debian安装oracle jdk
  10. 分子排列不同会导致_原子或分子之间的作用力是什么力?