黑马程序员技术交流社区
标题:
求助!!!
[打印本页]
作者:
╰_〃无法释怀的
时间:
2014-7-6 10:05
标题:
求助!!!
1000!里面包含多少个0 1000!1x2x3x4x5x6x7.......x1000这道题结果是有多少个0,怎么算帮忙说下思路
作者:
自闭宅男
时间:
2014-7-6 22:15
·······························
作者:
普哥
时间:
2014-7-6 22:19
// 解题思路:一个数 n 的阶乘末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5 的个数, 而 2 的个数是远远多余 5
// 的个数的, 因此求出 5 的个数即可。
public static void main(String[] args) {
int count_2 = 0;// 被2整除的次数之和
int count_5 = 0;// 被5整除的次数之和
// 遍历所有的数
for (int i = 1; i <= 1000; i++) {
// i用于控制循环的次数,而j用来整除
int j = i;
// 统计该数能被2整除的个数
while (j % 2 == 0) {
count_2++;
j /= 2;
}
// 统计该数能被5整除的个数
while (j % 5 == 0) {
count_5++;
j /= 5;
}
}
System.out.println("结尾0的个数为:" +count_5);
}
}
作者:
hmid
时间:
2014-7-6 22:28
楼上的没错。
作者:
人心如水
时间:
2014-7-7 00:40
我写的 ,自己看看就明白了
package com.itheima;
import java.math.BigInteger;
/*
* 思路,打印出结果,把结果每个整数单位转换为数组元素,然后遍历,出现0计数一次。
*/
public class Test9 {
public static void main(String[] args){
//因为1000!太大了,必须引入BigInteger类,建立对象并赋值为1
BigInteger sum = BigInteger.valueOf(1);
//调用下面的方法,得到sum的值
sum = factorial(sum);
//通过下面的方法获取结果中0的个数
System.out.println(getZeros(sum.toString()));
}
private static BigInteger factorial(BigInteger sum){// 1000!
for(int i=1;i<1001;i++){
//这里注意:i的类型必须转换,纠错了半天(***)
sum = sum.multiply(BigInteger.valueOf(i));
}
//这里已经获取到了sum的值,是个BigInteger类型
return sum;
}
//获取0个数的方法
private static int getZeros(String str){//get zeros
//利用split方法將字符串以"0"切割,转换为字符串数组
String[] split = str.split("0");
int size = 0;
//高级for循环完成遍历出非0的长度
for (String string : split) {
size = size + string.length();
}
//返回0的个数
return str.length() - size ;
}
}
作者:
郑飞
时间:
2014-7-7 02:31
我的题目是整个结果包含多少0 想了半天想不出来怎么破
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2