Skip to content
YaoYilin edited this page Aug 3, 2018 · 2 revisions

数学

给定一个整数 n,返回 n! 结果尾数中零的数量。

示例 1:

输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。

示例 2:

输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
public int TrailingZeroes(int n)
{
    if(n < 5)
        return 0;
    return n / 5 + TrailingZeroes(n / 5);
}

0 < n < 5的时候, f(n!) = 0。当n >= 5的时候f(n!) = k + f(k),其中k = n / 5。 其实这道题的实质就是在找有1~n中多少个5的因子(比如10 = 2 * 5, 10中也包含1个5)。

给定一个整数,写一个函数来判断它是否是 3 的幂次方。

示例 1:

输入: 27
输出: true

示例 2:

输入: 0
输出: false

示例 3:

输入: 9
输出: true

示例 4:

输入: 45
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
public bool IsPowerOfThree(int n)
{
    return (n > 0 && 1162261467 % n == 0);
}

1162261467是int类型中3的幂的最大的。

Clone this wiki locally