美文网首页程序员
FCTRL - Factorial

FCTRL - Factorial

作者: waaagh | 来源:发表于2020-04-28 21:42 被阅读0次

    题目大意:求N!尾部有几个0。
    思路:dp,很容易想到0的个数跟2和5有关,但2的个数多,因此由5决定。设dp(n)为n!尾部0的个数,公式:dp(n) = dp(n/5) + n/5。
    实现:不需要dp[]存状态,n只跟n/5相关,滚动起来即可。
    代码:

    #include <iostream>
    using namespace std;
    #define LL  long long
    LL sum;
    
    int main() {
        int t, N;
        scanf("%d", &t);
        for(int i=0; i<t; i++) {
            scanf("%d", &N);
            sum = 0;
            while(N) {
                sum += 1LL*N/5;
                N/=5;
            }
            cout << sum << endl;
        }
    
        return 0;
    }
    

    参考:
    https://en.wikipedia.org/wiki/Trailing_zero#Factorial

    相关文章

      网友评论

        本文标题:FCTRL - Factorial

        本文链接:https://www.haomeiwen.com/subject/yjqiwhtx.html