1 条题解

  • 0
    @ 2025-4-20 22:31:49

    解题思路

    题目要求计算N!N!末尾的零的个数Z(N)Z(N)。末尾的零由1010的幂次决定,而10=2×510=2×5。在阶乘中,22的因子比55的因子多,因此Z(N)Z(N)实际上等于N!N!55的因子的个数。

    代码实现

    #include <iostream>
    using namespace std;
    
    int countTrailingZeros(int n) {
        int count = 0;
        for (int powerOf5 = 5; powerOf5 <= n; powerOf5 *= 5) {
            count += n / powerOf5;
        }
        return count;
    }
    
    int main() {
        int T;
        cin >> T;
        while (T--) {
            int N;
            cin >> N;
            cout << countTrailingZeros(N) << endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    402
    时间
    2000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    2
    已通过
    2
    上传者