如何查找数字N的尾随零的数量

时间:2016-02-07 10:14:22

标签: java

  

给定一个数字n,找出n!

的十进制表示结尾处的零个数

输入:

第一行输入将包含T =测试用例数。接下来的T行将各自具有一个数n,其中1 <= n <= 10 ^ 9。在这个数字n的阶乘中找出尾随零的数量(最后的零)。

输出:

每个测试用例应该有一行打印给定数字的阶乘的尾随零的数量。

示例输入

4

6

12

18

25

示例输出

1

2

3

6

MyOutput中

2

6

1

... //这表示输入输入的条件没有终止,也没有输出。

MyApproach:

计算尾随零。我检查了5的数量,因为如果有5则肯定会有2,那么最后会产生零。 所以,我编写了以下代码,并且还没有检查过这些数字是否小于或等于4.

以下是我的代码:

 public static void zerosCount()
 {
  Scanner sc=new Scanner(System.in);

   int T=sc.nextInt();
   for(int i=0;i<T;i++)
   {
     int count5=0;
     int p=sc.nextInt();
      while(p>=1)
        {
          int n=p;
          while(n>=5)
           {
              if(n%5==0)
              {
                  count5++;
                  n=n/5;
              }
           }
         p--;
        }
       System.out.println(count5);
   }
         sc.close();
}
  

为什么我无法获得正确的输出:

     

任何人都可以指导我为什么吗?

2 个答案:

答案 0 :(得分:2)

@radoh提到的方法不完整,会导致错误的答案,例如100,有24个零,但n / 5只能得到20个。
零的数量取决于5s。所以如果 N = 5然后除以5,得到1
N = 10然后除以5给出2
N = 25然后除以5和25
N = 50然后除以5和25将给你12
N = 100然后除以5 25将给你24
因此,底线是在每个除法之后,将5与5相乘,如果乘法的结果小于等于N,则将N除以结果并添加零计数器变量。

答案 1 :(得分:0)

这就是我在Narendra和radoh

的帮助下解决问题的方法

无论输入是什么,我都计算了5的数字并检查数字,直到它大于或等于5.如果一个数字超过一个零或者我说的超过15,则计算总和。