首页 > 学院 > 开发设计 > 正文

求0的个数

2019-11-08 01:01:42
字体:
来源:转载
供稿:网友

求1X2X3X4X....XN所得数的末尾有多少个0 ?

#include <iostream>//求N!后面0的个数 using namespace std;	int i,ii,n;	long sum;int main(int argc, char** argv) {	ii=0;	sum=1;//累乘 	cin>>n;	for(i=1;i<=n;i++)	{		sum=sum*i;		//若后面有0,则去掉0并计数 		while(sum%10==0)		{			sum=sum/10;			ii=ii+1; 		} 		sum=sum%1000;	}	cout<<"后面有"<<ii<<"个0";	return 0;}

改进:

分析:分子中有多少个5,末尾就有多少个0

#include <iostream>using namespace std;int main(int argc, char** argv) {	int i,ii,j,n;	j=5;ii=0;	cin>>n;	while(j<=n)	{		i=j;		while(i%5==0)//有多少因子,就有多少个0 		{			i=i/5;			ii=ii+1;//0的个数累加			}			j=j+5;//五五累加 	}	cout<<n<<"的阶乘末尾有"<<ii<<"个0"; 	return 0;}

再改进:

#include <iostream>using namespace std;//求N!后面零的个数,仅需sqrt(N)次循环int i,ii,n; int main(int argc, char** argv) {	cin>>n;	i=n;	ii=0;	while(i>=5)	{		i=i/5;		ii=ii+i;	} 	cout<<ii<<endl;	return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表