编程输入n(n<=1000),求n的阶乘值(n!)尾部有多少个连续的0。

输入一个整数n.输出一个整数输入10输出2... 输入一个整数n. 输出一个整数
输入
10输出2
展开
 我来答
教育小百科达人
2020-10-25 · TA获得超过156万个赞
知道大有可为答主
回答量:8828
采纳率:99%
帮助的人:477万
展开全部

编程输入n(n<=1000),求n的阶乘值(n!)尾部有5个连续的0。

集体过程如下:

int c10, c5, c2; //分别是10、5、2的个数

for(int i=2;i<=n;i++) {

  int x=i;

  while( x%10==0 ) {

    c10++;

    x/=10;

  }

  while( x%5==0 ) {

    c5++;

    x/=5;

  }

  while( x%2==0 ) {

    c2++;

    x/=2;

  }

}

return c10 + (c5<c2?c5:c2);  //这就是后续0的个数



扩展资料:

编译方式下,首先通过一个对应于所用程序设计语言的编译程序对源程序进行处理,经过对源程序的词法分析、语法分析、语意分析、代码生成和代码优化等阶段将所处理的源程序转换为用二进制代码表示的目标程序。

然后通过连接程序处理将程序中所用的函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件。调用这个执行文件就可以实现程序员在对应源程序文件中所指定的相应功能。

小狂中E
2013-09-26 · TA获得超过1418个赞
知道大有可为答主
回答量:1514
采纳率:66%
帮助的人:1033万
展开全部
int c10, c5, c2; //分别是10、5、2的个数
for(int i=2;i<=n;i++) {
  int x=i;
  while( x%10==0 ) {
    c10++;
    x/=10;
  }
  while( x%5==0 ) {
    c5++;
    x/=5;
  }
  while( x%2==0 ) {
    c2++;
    x/=2;
  }
}
return c10 + (c5<c2?c5:c2);  //这就是后续0的个数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
giantbrain
2013-09-26 · TA获得超过347个赞
知道小有建树答主
回答量:358
采纳率:100%
帮助的人:155万
展开全部
等价于n!含有多少个素因数5
P()表示取整,即P(1.25)=1。
P(n/5)+P(n/25)+P(n/125)+P(n/625)+ ... +P(n/P(log5(n)))
更多追问追答
追问
用C++语言编程出来。
追答
//P(n/5)+P(n/25)+P(n/125)+P(n/625)+ ... +P(n/5^P(log5(n)))

using namespace ;

long p,n,m;
cin>>n;
p=n;m=0;
while (p)
{
p/=5;
m+=p;
}
cout>>m;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式