NYOJ 84

View Code
 1 /*
2 思路(借鉴):
3 n!阶乘能分解出几个5,就有几个0
4 因为5与偶数相乘的一个零,偶数是充足的
5
6 */
7 #include<iostream>
8 using namespace std;
9 int a[10000001];
10 int main()
11 {
12 int i,n,m;
13 for(i=1;i<10000001;++i)
14 {
15 if(i<5){a[i]=0;continue;}
16 int k=i/5;// i先分解出一个5,他的商还能分解几个
17 a[i]=k+a[k];// 前面已经计算过了在a[k]中
18 }
19 cin>>n;
20 while(n--)
21 {
22 cin>>m;
23 cout<<a[m]<<endl;
24 }
25 system("pause");
26 return 0;
27 }

 

View Code
 1 /*
2 比如:100!
3 只有是5的倍数才能分解出0
4 对于100的阶乘
5 100,95,90,...,15,10,5
6 各提取一个5(相当于 100有几个5可减)
7 变为:20,19,...,2,1.相当于20!看从这个里面还可以
8 提取几个
9 */
10 #include<iostream>
11 using namespace std;
12 int main()
13 {
14 int n,m,i,sum;
15 cin>>n;
16 while(n--)
17 {
18 cin>>m;
19 sum=0;
20 while(m)
21 {
22 m/=5;
23 sum+=m;
24 }
25 cout<<sum<<endl;
26 }
27 system("pause");
28 return 0;
29 }

 

posted @ 2012-02-17 13:50  知行执行  阅读(184)  评论(0编辑  收藏  举报