求1000阶乘末尾零的个数

用C语言,3Q... 用C语言,3Q 展开
 我来答
卿涉皇心
2020-03-04 · TA获得超过4041个赞
知道大有可为答主
回答量:3167
采纳率:25%
帮助的人:182万
展开全部
每出现一个2和5,就会在末尾有一个0,所以只要看,从1
到1000中总共有多少个2和5就可以了,又因为5总比2少,所以,只要看1000的阶乘中有多少个约数5就可以了。同样,只有末尾是0或者5的数才会有5,所以总共只有200个数其中包含5,但是,其中有1000/25=40个数包含2个5,1000/125=8个数包含三个5,1000/625=1个数包含4个5,所以总共有200+40+8+1=249个5,所以结果里总共有249个0。
cj3292855
2013-04-28 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:94万
展开全部
首先确定一项,能让末尾产生0的只有5的倍数和偶数相乘;
其次,偶数项个数一定要不小于是5的倍数的个数。
然后就是分层了。
%1000==0 count+3
%500==0 count+3
%100==0 count+2
%50==0 count+2
%10==0 count+1
%5==0 count+1

/*********************************************/
#include "stdafx.h"

int main ()
{
int i=1,count=0;
for (; i<1001; i++)
{
if (i % 1000 == 0)
count += 3;
else if (i % 500 == 0)
count += 3;
else if (i % 100 == 0)
count += 2;
else if (i % 50 == 0)
count += 2;
else if (i % 10 == 0)
count += 1;
else if (i % 5 == 0)
count += 1;
}
printf("%d",count);
getchar();
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rickyskyxie
推荐于2017-09-26 · TA获得超过337个赞
知道小有建树答主
回答量:442
采纳率:0%
帮助的人:411万
展开全部
#include <stdio.h>
int main()
{
int d = 1000;
int i,j,m;
m = 1;
j = 0;
for(i=1; i<=d; i++)
{
m *= i;
while( m%10 == 0 )
{
j++;
m /= 10;
}
m = m % 1000;
}
printf("%d\n", j);
// printf("%d\n", m);
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhenter
2013-04-28 · 超过31用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:74.4万
展开全部
这个算法有问题,我想的太简单了,不好意思
追问
你以为我笔头算不出啊?我就是要程序段。
追答
试试这个吧

int zeroNum(int n)
{
int sum=0;
for(int i=5;i<=n;i*=5)
sum+=n/i;
return sum;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式