| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 450 人关注过本帖
标题:新手上路,请求帮助
只看楼主 加入收藏
jf124174
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2008-4-18
收藏
 问题点数:0 回复次数:3 
新手上路,请求帮助
求1000!的值末尾有几个0
请大家给个思路...谢谢!
搜索更多相关主题的帖子: 请求 
2008-04-21 10:07
windlzf
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-8-7
收藏
得分:0 
以前在CSDN上看到过 转贴如下:

求n!末尾0的个数      
思考: 该题实际上是求(2 5)因子对的个数。对于任意一个阶乘,5因子的个数总是小于2因子的个数,仅需考虑n!中5因子的个数

方法:  
 (1) 将该数用 5 除, 得到的商取整数。  
 (2) 然后再用所得商当被除数除以 5,得到的商取整数。  
 (3) 持续做到商等于 0 为止。  
 (4) 过程中的商加总即为阶乘的尾数 0 的个数。  
 
 例: 1234! 的尾数 0 的个数计算如下: 代码:
   1234/5  = 246
   246/5  = 49
   49/5  = 9
   9/5  = 1
   1/5  = 0  
 ------ ---------- 305

原理:
 行(1)得到的是1~~~n中因子含5的数的个数
 行(2)得到的是1~~~n中因子含25的数的个数
   .
   .
 行(n)得到的是1~~~n中因子含5^n的数的个数

 将这些数进行累计就得到了5因子的个数,也就是末尾0的个数。

Attachment :my code

#include <stdio.h>

int main()
{
 int i, n;

 scanf("%d", &n);
 for(i=0; i<n; i++)
 {
  int temp;
  int cnt = 0;
  
  scanf("%d", &temp);
  while(temp != 0)
   cnt += (temp = temp/5);
  
  printf("%d\n", cnt);
 }
}
Trackback: http://tb.blog.
(这个地址我现在打不开了)
2008-04-21 10:25
yelusu
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-15
收藏
得分:0 
用递归来做很简单
2008-04-22 12:17
yelusu
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-4-15
收藏
得分:0 
if(n==0|| n==1) return 1;
f(n)=f(n-1)*n
2008-04-22 12:20
快速回复:新手上路,请求帮助
数据加载中...
 
   



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

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