【爱奇艺笔试】0823-01 n的阶乘后0的个数

  • n的阶乘问题:
  • 正整数n的阶乘(n!)中的末尾有多少个0?
  • 例如:n = 5, n! = 120, 末尾有1个0
  • 实现:int CountZero(int n);
  • 输入描述:
  • 一个正整数
  • 输出描述:
  • 一个自然数
  • 样例输入: 31
  • 样例输出: 7

具体代码实现如下:

package aiqiyi;

import java.math.BigInteger;
import java.util.Scanner;

public class aiqiyi01 {
     
    public static void main(String[] args){
     
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int res = 0;//用于记录一共多少个5
        while(n > 0){
     
            n /= 5;
            res += n;
        }
        System.out.println(res);

        /*
        * BigInteger 是一个大数类,可以存储任意长度数字序列的值。(整数型)
        * BigDecimal 同样,可以存储任意长度数字序列的值。(浮点型)
        * 使用valueOf可以将普通类型的数值转化为大数值。
        * BigInteger a = BigInteger.valueOf(2222);
        * 大数类 常用的构造方法如下:
        * BigInteger bi = new BigInteger("2222");
        * 不能用普通的加减乘除,需要调用其构造方法,add()、subtract()、multiply()、divide()。
        * */


        /*
        BigInteger bigInteger = new BigInteger("1");
        BigInteger bi = BigInteger.valueOf(1);
        for(int i = 1; i <= n; i++){
            bigInteger = bigInteger.multiply(BigInteger.valueOf(i));
        }

        int res = 0;
        while(bigInteger.mod(new BigInteger("10")).equals(new BigInteger("0"))){
            res++;
            bigInteger = bigInteger.divide(BigInteger.valueOf(10));
        }

        System.out.println(res);

         */
    }
}

你可能感兴趣的:(笔试题)