求0的个数

来源:互联网 发布:血源诅咒妹子捏脸数据 编辑:程序博客网 时间:2024/05/17 06:59

求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;}

0 0
原创粉丝点击