n的阶乘尾数有几个0

/*
 n!尾数有几个0 
*/
#include <iostream>
using namespace std;
void find0(int n); 
int find(int i,int n);
int main(void)
{
	int n;
	cin>>n;
	find0(n); 
	return 0;
}
void find0(int n)
{
	int cnt5=0,cnt2=0; 
	//分析
	/*
	每次产生一个0有
	2*5=10;
	10=2*5;
	*/ 
	for(int i=1;i<=n;i++){
	//		cnt2+=find(i,2); 
			cnt5+=find(i,5);
	} 
	//cout<<"尾数有"<< (cnt5>cnt2?cnt2:cnt5)<<"个0"<<endl; 
    cout<<"尾数有"<< cnt5 <<"个0"<<endl; 
}

int find(int i,int n){
	int cnt=0;
	while(!(i%n)){
		cnt++;
		i=i/n;
	}
	return cnt;
}


posted @ 2014-12-15 20:57  机智的程序员小熊  阅读(111)  评论(0编辑  收藏  举报