| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2614 人关注过本帖
标题:输入一个自然数n,求n!,同时统计结果中有多少个0
只看楼主 加入收藏
zhzzhz
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-7
收藏
 问题点数:0 回复次数:6 
输入一个自然数n,求n!,同时统计结果中有多少个0
请帮忙给出源代码

算阶乘的代码自己已经写出
#include<stdio.h>
unsigned long mul(int n);
int main()
{
int m;
puts("Calculate n! n=?\n");
scanf("%d", &m);
printf("%d!=%ld\n", m, mul(m));
getch();
return 0;
}
unsigned long mul(int n)
{
unsigned long p;
if(n>1)
p=n*mul(n-1);
else
p=1L;
return(p);
}
搜索更多相关主题的帖子: 自然数 源代码 int 结果 
2007-07-07 14:23
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
用ltoa将数转化成字符串,然后逐个统计

天行健,君子以自强不息!!QQ:68660681
2007-07-07 14:29
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
int main()
{
int n;
int sum=1,i,len,count=0;
char s[128];

printf("input number:");
scanf("%d",&n);

for(i=1;i<=n;i++)
{
sum=sum*i;
}

printf("ret:%d\n",sum);

sprintf(s,"%d\0",sum);

for(i=0;i<strlen(s);i++)
{
if(s[i]=='0')
count++;
}

printf("the 0 count:%d\n",count);
}

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-07-07 15:47
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1029
专家分:177
注 册:2007-5-10
收藏
得分:0 
此题需要知道n的范围
2007-07-07 15:58
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 

以下是我曾经发的一个精华讲解:
原贴:http://bbs.bc-cn.net/viewthread.php?tid=118295&star=at#

我曾经研究过世界奥林匹克的题,最终发现一个无与伦比的简单解法:
用原数除以5,如100/5=20;
如果得数大于5则将得数再除以5,即20/5=4;
依次类推,直到得数小于4时停止,将以上得数相加
得(20+4)=24,即为解

再举一个例子:
1000/5=200;
200/5=40;
40/5=8;
8/5=1...3;

则1000!末尾有(200+40+8+1)=249.

注意:如果除的过程中发现有余数,则去掉余数,用得数接着算即可,就如8/5=1...3,这里3是没有任何作用的

以上为原创作品,请不要抄袭,转载请告之本人,谢谢!

还有,如果真要求解乘的结果后再"数"零的个数,可以参见我发的
http://bbs.bc-cn.net/viewthread.php?tid=108422&extra=&page=100#
可以解决大数的解乘计算的问题


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-07-07 16:45
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
#include<stdio.h>
#include<conio.c>
long numof5(long n);
int main()
{
long n,k;
while(1){
k=0;
scanf("%d",&n);
for(int i=5;i<=n;i+=5)
{
k+=numof5(i);
}
printf("%d\n",k);
}
}
long numof5(long n)
{
int i=0;
for(;n%5==0;i++)
{
n/=5;
}
return i;
}

羊肉串 葡萄干 哈密瓜!!
2007-07-07 16:48
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
收藏
得分:0 
长知识了,多谢多谢

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-07-07 17:03
快速回复:输入一个自然数n,求n!,同时统计结果中有多少个0
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020085 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved