本文介绍: 而质因数为2会每两次出现一次,质因数为5会每五次出现一次,因此我们只需要统计出现质因数为5的情况。我的做法:(错误)直接找余5得0得数。而能凑出0的只能是10,而10又等于。实际上应该找存在多少个为5质因数。,所以我们找可以出现多少对。

我的做法:(错误)直接找余5得0得数

class Solution {
    public int trailingZeroes(int n) {
        int ans = 0;
        for (int i = 1; i <= n; ++i) {
            if (i % 5 == 0) ++ans;
        }
        return ans;
    }
}

实际上应该找存在多少个为5质因数。

举例:

11=11*10*9*8*7*6*5*4*3*2*1=39,916,800(两个0
11=11*2*5*9*2*4*7*2*3*5*2*2*3*2*1*1

而能凑出0的只能是10,而10又等于2*5,所以我们找可以出现多少对2*5,而质因数为2会每两次出现一次,质因数为5会每五次出现一次,因此我们只需要统计出现质因数为5的情况。

class Solution {
    public int trailingZeroes(int n) {
        int ans = 0;
        for (int i = 5; i <= n; i += 5) {
            for (int x = i; x % 5 == 0; x /= 5) {
                ++ans;
            }
        }
        return ans;
    }
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注