------- <a href="http://www.itheima.com" target="blank">android培训</a>
代码实现:
public class Test9 {
public static void main(String[] args){
//定义一个数组,用来存储1000!的结果
int a[] = new int[4000];
//给数组初始化,由于1000!结果的每一位必然是大于0的正整数,所以初始化是用-1利于区分
for(int i=0; i<4000; i++){
a[i] = -1;
}
//给出初始值
a[0] = 1;
//两层循环来模拟乘法
for(int i=2; i<=1000; i++){
//用数组模拟乘法
for(int j=0; j<4000; j++){
//当该下标等于-1时 表示乘法进位没有达到该位置
if(a[j] == -1){
break;
}
a[j] = i*j;
}
//处理进位问题
for(int k=0; k<4000-3; k++){
if(a[k] == -1){
break;
}
//由于最大是个位数乘以千位数得到的结果做大也是一个千位的数
int thousands = a[k]/1000 ;
int hundreds = a[k]%1000/10;
int tens = a[k]%100/10;
int units = a[k]%10;
a[k] = units;
//十位进位
if(a[k+1] == -1){
a[k+1] = tens;
}else{
a[k+1] += tens;
}
//百位进位
if(a[k+2] == -1){
a[k+2] = hundreds;
}else{
a[k+2] += hundreds;
}
//千位进位
if(a[k+3] == -1){
a[k+3] = thousands;
}else{
a[k+3] += thousands;
}
}
}
//定义变量统计结果中0的个数
int count = 0;
//循环整个数组,统计0的个数
for(int i=0; i<4000; i++){
if(a[i] == -1){
break;
}
if(a[i] == 0){
count++;
}
}
System.out.println("1000!的零的个数是:" + count);
}
}
<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------