| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1227 人关注过本帖
标题:[讨论]1*2*3*...*1000末尾有多说个连续的0?
只看楼主 加入收藏
adm_qxx
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2005-4-5
收藏
 问题点数:0 回复次数:3 
[讨论]1*2*3*...*1000末尾有多说个连续的0?
1*2*3*...*1000是一个很大的数,这个数的末尾有多说个连续的0?
大家试着用java编一下。
过后我把我的算法发上去。
搜索更多相关主题的帖子: 末尾 
2005-10-23 19:39
believefym
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2005-10-20
收藏
得分:0 

没有算法,看各位的 import java.math.*; public class OneK { public static void main(String[] args) { BigInteger b = BigInteger.valueOf(1); for(int i=1; i<=1000; i++){ b = b.multiply(BigInteger.valueOf(i)); } String tmp = b.toString(); int counter=0; for(int i=tmp.length()-1; i>0; i--){ if(tmp.charAt(i)=='0') counter++; else break; } System.out.println(counter);//249 }

}


2005-10-23 20:46
licweiwei
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-8-14
收藏
得分:0 
主要就是大数字的应用吧?
2005-10-24 14:40
adm_qxx
Rank: 1
等 级:新手上路
帖 子:92
专家分:0
注 册:2005-4-5
收藏
得分:0 

是我孤陋寡闻了,我当时不知道BigInteger。我的本意是让用其他基本的方法算出来。原题是我在Baidu的Java吧里发现的。帖子总算没有白发,谢谢2楼让我又学到了BigInteger。 一下是我的算法:

/** * 算法描述: * 分解质因数,即: * 1*2*3*...*1000 = (2*5)*(2*5)*...*(2*5) *(没有匹配的2或5) //其实地球人都知道2肯定比5多 //这样其实只需要确定因子5的个数即可 *(除2和5以外的其他质因数) * 其因子中有多少个(2*5)即末尾有多少个0 * 因此问题变成求每个数中2和5因子的个数,再求和 * 最后min(因子2个数的总和,因子5个数的总和)即是所求。 */ public class SumZero { SumZero(){ max = 1000;//默认值是1000 } SumZero(int n){ max = n;//可以通过构造函数修改max的值 } private int max; /** * 得到max的因子 m 的个数 */ public int getFactor(int m){ int count = 0, n = max; //try 中的便是程序的核心 try{ while(n%m == 0){//能被m整除则count++ count++; if(n >= m){ n /= m; } } } catch(Exception e){ e.printStackTrace(); } return count; } /** * 得到末尾0的个数 */ public int getNumber(){ int count_2 = 0,//因子2的个数 count_5 = 0;//因子5的个数

for(int i = 1;i<=max;i++){ count_2 += getFactor(i,2);//其实没有必要求因子2的个数 count_5 += getFactor(i,5); } return Math.min(count_2,count_5);//必定有:count_5 < count_2 } public static void main(String[] args){ System.out.println("1*2*...*1000的末尾有" +new SumZero().getNumber() +"个0"); } } 原题在[URL=http://post.baidu.com/f?kz=53897730]这里[/URL]


学习是进步的基础.
2005-10-25 20:49
快速回复:[讨论]1*2*3*...*1000末尾有多说个连续的0?
数据加载中...
 
   



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

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