1381. 阶乘

数字后面的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;
}
posted @ 2021-06-16 13:17  Dazzling!  阅读(94)  评论(0编辑  收藏  举报