题解 | #阶乘末尾非零数字#

阶乘末尾非零数字

https://www.nowcoder.com/practice/248c8fbee56e491aa147b67b9c082da0

#include <iostream>
using namespace std;
int n;
int main() {
    cin >> n;
    /*
    n! 中 偶数 和 5相乘会出现0,而其它情况 答案就是 相乘的最后一位
    n2 表示 n!中有多少个因子2;n5 表示 n!中有多少个因子5;
    */
    int n2 = 0, n5 = 0;
    int p = 1;
    for(int i = 2; i <= n; i++){
        int temp = i;
        // 求 [2~n]中每个数的 因数5 的个数
        for(; temp % 5 == 0; temp/=5)
            n5++;
        for(; temp % 2 == 0; temp/=2)
            n2++;
        // 这个时候 剩下的temp 就是i 除去因子2 和 因子 5的 结果,这个时候再乘上最后一位非0数字p,就得到其它因子的成绩的最后一位非0数字
        p = p*temp % 10;
    }
    // 因子5和因子2相乘得到0,所以有多少因子5,就有多少因子0,如果因子2的个数大于因子5的个数,则剩下没用完的因子2要再乘回去才能算出正确的答案p
    for(int i = 0; i < n2 -n5; i++){
        p = p * 2 % 10;
    }
    cout << p << endl;
    return 0;
}
// 64 位输出请用 printf("%lld")

#每日一题#
全部评论

相关推荐

点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务