本帖最后由 wata 于 2014-12-20 11:28 编辑
- /*
- 9、 求1000!的结果中包含多少个0?注:1000! = 1×2×3×4×5×...×999×1000
- -----------------------------
- 思路:
- 因为0是由因数10产生的,而10是由2*5产生的,其中每2个数就有一个是2,每5个才有1个是5的倍数。
- 所以我们只需要计算并累加:
- 1~1000能被5^1(5<=1000)整除的个数
- 1~1000能被5^2(25<=1000)整除的个数
- 1~1000能被5^3(125<=1000)整除的个数
- 1~1000能被5^4(625<=1000)整除的个数
- 即可。因为1~1000里面有多少个数是5,25,125,625(均小于1000)的倍数,那么末尾就有多少个0。
- */
- public class Test09
- {
- public static void main(String[] args)
- {
- int count = 0;
- for(int x=1; x<=1000; x++){//1~1000循环。
- for(int y=5; y<=1000; y*=5){//获取值<=1000,并是5的倍数(5, 25, 125, 625)。
- if(x%y==0){//1~1000中能被5,25,125,625整除的个数。
- count++;//累加0的个数。
- }
- }
- }
- System.out.println("count = "+count);
- }
- }
复制代码
现在我知道哪里错了。
原因:
我写的程序只能计算1000!末尾0的个数,而中间的0的个数是没有累加到count中的。
如:205800,这就有三个零。而我的程序只有2个0。所以需要使用大数据BigInteger来解题。
所以楼下“聪明叉”的答案才是对的。
|