黑马程序员技术交流社区

标题: 这个题谁会啊。。 [打印本页]

作者: pisces    时间: 2015-5-7 21:54
标题: 这个题谁会啊。。

求1000!的结果末尾有多少个0
作者: 陈锐涛    时间: 2015-5-7 22:35
必须保佑 ~~一生平安啊~~
作者: guowei    时间: 2015-5-8 00:08
把整数变成字符数组  你应该会变得吧  在然后判断各个角标对应的是不是0就可以刻  然后在做一个计数器
作者: ytooo00    时间: 2015-5-8 00:38
可以考虑用BigInteger
作者: 想要那片海    时间: 2015-5-8 08:31
定义一个计数器,然后把这个数对10循环取模,用计数器记录住取模的次数,你试一下
作者: shw16888    时间: 2015-5-8 10:22
转成字符数组,获取角标值,判断是否为0,计时器累加
作者: 1017161726    时间: 2015-5-8 10:47
本帖最后由 1017161726 于 2015-5-8 10:55 编辑

用BigInteger。你需要去API里查一下用法和介绍。我也是看了才懂得。import java.math.BigInteger;
class Demo
{
        public static void main(String [] args)
        {
                BigInteger bi=BigInteger.valueOf(1);
                for (int x=2;x<=1000;x++)
                {
                        bi = bi.multiply(BigInteger.valueOf(x));
                       
                }
               
                int sum=0;
                StringBuilder sb=new StringBuilder();
                sb.append(bi);
                String s=sb.reverse().toString();
                int n=0;
                while((s.charAt(n))=='0')
                {
                        sum++;
                        n++;
                }
                System.out.println(sum);
        }
}
希望你多用几遍,学会。





作者: 1017161726    时间: 2015-5-8 10:56
不知道怎么了,粘贴代码块进去,粘贴了十几遍都不能保存,不用代码块了,直接这么看吧。
作者: 嘉Ming    时间: 2015-5-8 13:27
我的测试题里面也有这题,学习了
作者: libin    时间: 2015-5-8 13:32
public class Test9 {
        public static void main(String[] args){
                //定义一个长整形变量product,初始值赋1,用来盛装1000!的结果
                long product=1;
                //for循环1000次,求出1000!的结果
                for(int i=1;i<=1000;i++){
                        product=product*i;
                }
                //定义整形变量a,用来装1000!的结果中包含的零的个数
                int a=0;
                //for循环里面嵌套if,条件语句,依次判断product的个、十、百....直到最大位,如果为0,则a+1.
                for(int i=1;i<=1000;i++){
                        product=product/10;
                        if(product%10==0)
                                a=a+1;
                }
                //输出最终结果。
                System.out.println("1000!包含"+a+"个零");
        }

}
自个做的代码块。
作者: 知来者之可追    时间: 2015-5-8 20:40
我的测试题也有做过。
作者: pengyang    时间: 2015-5-8 21:20
求有多少个5和2的因子对
作者: pisces    时间: 2015-5-8 22:13
谢谢 各位 借鉴了
作者: Oh.Ba    时间: 2015-5-8 22:49
除以10就好了
作者: wkz_crystal    时间: 2015-5-8 23:18
看看我的思想吧:我写得非常详细:
[code]/*
1*2*3*4*5*6*……一直乘到1000,问末尾共有多少个零?

是这样的,有一个五,就会有一个零,例如:2*5=10,12*15=180.
因此,可以列出算式:1000/5=200,再看200里有多少个五,200/5=40,
诸如此类,40/5=8,可是8不能整除五,不过可以看到8里面只有一个五,
所以【8/5】=1,最后200+40+8+1=249个零。

上述是属于具体的分析方法,和发现其中的规律,下面我用代码实现:
其实就是实现:(1000/5)+(1000/25)+(1000/125)……的一个过程……
相信代码你也能写出来的……
作者: 我心依旧0329    时间: 2015-5-8 23:23
做一个计数器,然后让各个角标对应0就ok了.  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2