import java.util.Scanner;
/**
 * 计算n!的末尾有多少个零
 * @author howard2005
 */
public class test { public static void main(String[] args) {
int n, jc; Scanner sc = new Scanner(System.in);
System.out.print("n=");
n = sc.nextInt(); jc = 1;
for (int i = 1; i <= n; i++) {
jc = jc * i;
}
System.out.println(jc); String strJc = String.valueOf(jc);
StringBuffer buffer = new StringBuffer(); for (int i = strJc.length() - 1; i >= 0; i--) {
char c = strJc.charAt(i);
if (c == '0') {
buffer.append(c);
} else {
break;
}
} int count = buffer.length();
System.out.println(n + "!的末尾有" + count + "个零。");
}
}

解决方案 »

  1.   

    没看出你这个里面用了 BigInteger阶乘后面有几个零不是这么算的帮你百度一下比如计算 523!的末尾有几个0。
    用523一直除以5(取整数),直到商为0,然后把这些整数商加起来就是了。523/5=104
    104/5=20
    20/5=4
    4/5=0所以最后有 104+20+4+0=128 个0.
      

  2.   

    嗯,谢谢你百度,可以我这个方法是可以算出末尾有几个0的,只是表示范围很小,当我想求更大的数的阶乘就不够用了,我想用biginteger,但是不会用,请您帮我用用吧,拜托啦。
      

  3.   

    我想您没理解我这个题的意思吧,原题是这样的:
     对一个正整数n,求出n!中末尾0的个数。
    输入
    输入有若干行。每一行上有一个整数T,是测试数据组数,接着有T行,每一行包含一个确定的正整数n(n≤1000000000)。
    输出
    对输入行中的每一个数据n,输出一行,其内容是n!中末尾0的个数。
    输入样例                              输出样例
    3                                     
    3                                     0
    100                                   24
    1024                                  253  
    如果按照您的方法,100!就是用100/5,就等于0了哦
      

  4.   


    import java.math.BigInteger;public class TestBigInteger {
    public static void main(String[] args) {
    BigInteger bigInt_One = new BigInteger("22");
    BigInteger bigInt_Two = new BigInteger("9");
    System.out.println("加:"+bigInt_One.add(bigInt_Two));
    System.out.println("减:"+bigInt_One.subtract(bigInt_Two));
    System.out.println("乘:"+bigInt_One.multiply(bigInt_Two));
    System.out.println("除:"+bigInt_One.divide(bigInt_Two));
    }
    }
      

  5.   

    http://blog.csdn.net/raistlic/article/details/7844812这是我写的排列组合,第一个类就是用BigInteger求阶乘的。