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;
}

最新文章

  1. ABP源码分析十八:UI Inputs
  2. echarts学习总结
  3. maven更改编译环境的java版本
  4. HDU 4811 Ball -2013 ICPC南京区域现场赛
  5. php发送post包
  6. Android_就像小朋友“搭积木”一样。
  7. .bss 段 block started symbol
  8. ARCGIS二维三维互动
  9. cas配置全攻略(转)
  10. Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1)&amp;&amp;Codeforces 861B Which floor?【枚举,暴力】
  11. Switch-case 内定义变量的问题
  12. (hdu)4858 项目管理 (vector)
  13. java-类、对象
  14. Android项目实战(四十一):游戏和视频类型应用 状态栏沉浸式效果
  15. JAVA 数据类型数组
  16. QChart绘制折线区域
  17. 20172302 《Java软件结构与数据结构》实验一:线性结构实验报告
  18. Oracle12c CDB架构图
  19. 各种linux小操作
  20. NGS的duplicate的问题

热门文章

  1. Git学习笔记(二) 远程仓库及分支
  2. Intellij IDEA错误识别.xml文件
  3. SpringBoot整合Quartz定时任务
  4. PHP图片的类型将其自动编码成base64
  5. Centos:mysql的安装和使用:yum方式
  6. webpack配置:打包第三方类库、第三方类库抽离、watch自动打包、集中拷贝静态资源
  7. php中将SimpleXMLElement Object数组转化为普通数组
  8. shell中单引号、双引号、反引号的区别
  9. [Functional Programming] Pull Many Random Numbers in a Single State ADT Transaction
  10. Java8 增强的Future:CompletableFuture(笔记)