NYOJ84 阶乘的0

 

阶乘的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

/*
本题主要是找到1到m中每个数含有5的约数的个数总和;

 1 /*
 2 本题主要是找到 1到 m中每个数含有 5的 约数的个数总和;
 3 //超时代码一:
 4 #include<stdio.h>
 5 #include<string.h>
 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<stdio.h>
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<stdio.h>
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 }
功不成,身已退
原文地址:https://www.cnblogs.com/dongsheng/p/2533436.html