求1000的阶乘结果中所有0的个数,以及尾部0的个数 (10200 中所有0有3个,尾部0的个数是2个)
分析:
1000的阶乘太大,结果不能使用int 要用BigInteger
尾部0 的个数,可以通过字符串反转。
public class test8 {
public static void main(String[] args) {
Demo1(); //所有0个数
Dem2(); //尾部0个数
}
private static void Dem2() {
BigInteger bi1 = new BigInteger("1");
for (int i = 1; i < 1000; i++) {
BigInteger bi2 = new BigInteger(i + "");
bi1 = bi1.multiply(bi2);
}
String str = bi1.toString();
StringBuilder sb = new StringBuilder(str);
str = sb.reverse().toString();
int count = 0;
for (int i = 1; i < str.length(); i++) {
if ('0' == str.charAt(i)) {
count++;
}else {
break;
}
}
System.out.println(count);
}
private static void Demo1() {
BigInteger bi1 = new BigInteger("1");
for (int i = 1; i < 1000; i++) {
BigInteger bi2 = new BigInteger(i + "");
bi1 = bi1.multiply(bi2);
}
String str = bi1.toString();
int count = 0;
for (int i = 0; i < str.length(); i++) {
if ('0' == str.charAt(i)) {
count++;
}
}
System.out.println(count);
}
}