Leetcode#172Factorial Trailing Zeroes

public class Solution {

    public int trailingZeroes(int n) {

        int oushu=0;

        int jishu=0;

        int zero=0;

        for(int i=1;i<=n;i++)

        {

            int c=i;

            if(i%10==0)

            {

                while(c%10==0)

                {

                    zero++;

                    c=c/10;

                }

            }

            else

            {

                if(i%2==0)

                    oushu++;

                else

                    jishu++;

            }

        }

        if(jishu>oushu)

            return zero+oushu;

        else

            return zero+jishu;

        

    }

}

Submission Result: Time Limit ExceededMore Details 

Last executed input: 1808548329


public class Solution {

    public int trailingZeroes(int n) {

      int x=0;

      while(n>0)

      {

          x=x+n/5;

          n=n/5;

      }

    return x;

    }

}


只有2和5相乘才会出现0,其中整十也可以看做是2和5相乘的结果,所以,可以在n之前看看有多少个2以及多少个5就行了,又发现2的数量一定多于5的个数,于是我们只看n前面有多少个5就行了,于是n/5就得到了5的个数,还有一点要注意的就是25这种,5和5相乘的结果,所以,还要看n/5里面有多少个5,也就相当于看n里面有多少个25,还有125,625.。。

你可能感兴趣的:(LeetCode,public)