展开全部
首先确定一项,能让末尾产生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;
}
其次,偶数项个数一定要不小于是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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个算法有问题,我想的太简单了,不好意思
追问
你以为我笔头算不出啊?我就是要程序段。
追答
试试这个吧
int zeroNum(int n)
{
int sum=0;
for(int i=5;i<=n;i*=5)
sum+=n/i;
return sum;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询