A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public static void main(String[] args) {
        BigInteger bir = new BigInteger("1");
        for(int i=1;i<=1000;i++)
{
          bir= bir.multiply(new BigInteger(String.valueOf(i)));
          }
        String s=bir.toString();
        System.out.println(s);
        int count=0;
        for (int i = 0; i < s.length(); i++)
{
           if(s.charAt(i)=='0') count++;
         }
       System.out.println("共有"+count+"0");

2 个回复

倒序浏览
还是要找出规律才好
  1. package cn.itcast.test;

  2. public class Test2 {

  3.         /**
  4.          * @param args
  5.          * 1000!尾部有多少个零,用递归来实现
  6.          * 10!尾部有几个零   5 10   有两个零                                                 10/5=2
  7.          * 20!尾部有几个零   5 10 15 20  有四个零                                        20/5=4
  8.          * 30!尾部有几个零   5 10 15 20 25(5*5) 30 有七个零                30/5=6        +        6/5=1
  9.          * 50!尾部有几个零   5 10 15 20 25(5*5) 30 35 40 45 50(5*5*2)     50/5=10 + 10/5 = 12
  10.          * 150!尾部有几个零
  11.          *         5 10 15 20 25(5*5) 30 35 40 45 50(5*5*2) 55 60 65 70 75(5*5*3)
  12.          * 80 85 90 95 100(5*5*4) 105 110 115 120 125(5*5*5) 130 135 140 145 150(5*5*6)
  13.          *                                                                                                 150/5 = 30  + 30 / 5 = 6 + 6/5
  14.          */
  15.         public static void main(String[] args) {
  16.                 int num = getZero(1000);
  17.                 System.out.println(num);
  18.         }
  19.        
  20.         public static int getZero(int num) {
  21.                 if(num >= 1 && num <= 4) {
  22.                         return 0;
  23.                 }else {
  24.                         return num / 5 + getZero(num / 5);               
  25.                 }
  26.         }

  27. }
复制代码
回复 使用道具 举报
  1. package com.itheima;

  2. public class Multiply {
  3.         public static void main(String[] args)
  4.         {
  5.                 int mul=1,num=0,end=1000;
  6.                
  7.                
  8.                 for(int i=1;i<=end;i++)
  9.                 {
  10.                         mul=mul*i;
  11.                         //除去乘积后面所有0,并累加这些0
  12.                         while(mul%10==0)
  13.                         {
  14.                                 mul=mul/10;
  15.                                 num++;
  16.                         }
  17.                         //取得最后以为有效数字,因为下一个乘积末尾是否有0只与末尾数有关
  18.                         mul=mul%10;
  19.                        
  20.                        
  21.                 }
  22.                 System.out.println(end+"的阶乘,共有"+num+"个零");
  23.         }
  24. }
复制代码

也可以这样做
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马