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 }

 

转载于:https://www.cnblogs.com/zhixingqiezhixing/archive/2012/02/17/2355682.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值