首页 > 其他 > 详细

1381. 阶乘

时间:2021-06-16 14:45:26      阅读:24      评论:0      收藏:0      [点我收藏+]

数字后面的0可以被10整除,或者等于2和5整除。此外,在一个阶乘中总是质因子2的个数多于5的个数。

为了得到阶乘的最后一位数,我们可以运行一个循环来计算阶乘模10的结果,但要出去质因子2或5。

最后,排除相同数量的2和5,从而忽略10,并乘以多余数目的质因子2。

int n;

int main()
{
    cin >> n;
    
    int res = 1;
    int d2 = 0, d5 = 0;
    for(int i = 1; i <= n; i++)
    {
        int x = i;
        while(x % 2 == 0) x /= 2, d2++;
        while(x % 5 == 0) x /= 5, d5++;
        res = res * x % 10;
    }
    
    for(int i = 0; i < d2 - d5; i++)
        res = res * 2 % 10;
    cout << res << endl;
    
    return 0;
}

1381. 阶乘

原文:https://www.cnblogs.com/fxh0707/p/14888979.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!