阶乘的0
时间限制: 3000 ms | 内存限制: 65535 KB
难度: 3
- 描述
- 计算n!的十进制表示最后有多少个0
- 输入
- 第一行输入一个整数N表示测试数据的组数(1<=N<=100) 每组测试数据占一行,都只有一个整数M(0<=M<=10000000) 输出
- 输出M的阶乘的十进制表示中最后0的个数 比如5!=120则最后的0的个数为1 样例输入
-
63601001024234568735373
样例输出 -
0142425358612183837
/*
本题主要是找到1到m中每个数含有5的约数的个数总和;1 /* 2 本题主要是找到 1到 m中每个数含有 5的 约数的个数总和; 3 //超时代码一: 4 #include5 #include 6 int a[10000000]; 7 int main() 8 { 9 int n,m,i,j,t,num,bit;10 scanf("%d",&n);11 while(n--)12 {13 num=0;14 memset(a,0,sizeof(a));15 scanf("%d",&m);16 a[0]=1;17 bit=0;18 for(i=1;i<=m;++i)19 {20 t=0;21 for(j=0;j<=bit;++j)22 {23 a[j]=a[j]*i+t;24 t=a[j]/10;25 a[j]=a[j]%10;26 }27 if(t)28 bit++;29 }30 for(i=0;a[i]==0;++i)31 num++;32 printf("%d\n",num);33 }34 return 0;35 }36 37 超时代吗二:38 #include 39 int main()40 {41 int n,m,i,t,num;42 scanf("%d",&n);43 while(n--)44 {45 num=0;46 scanf("%d",&m);47 for(i=5;i<=m;++i)48 {49 t=i;50 while(t%5==0)51 {52 ++num;53 t/=5;54 }55 }56 printf("%d\n",num);57 }58 return 0;59 }60 */61 //AC代码-----求 1 --- n 之间所有数含有多少个因子 5 62 #include 63 int main()64 {65 int n,m,num;66 scanf("%d",&n);67 while(n--)68 {69 num=0;70 scanf("%d",&m);71 while(m!=0)72 {73 num=num+m/5;74 m=m/5;75 }76 printf("%d\n",num);77 }78 return 0;79 }