阶乘的最后一个非零数字

问题描述 投票:0回答:1

我尝试在 cpp 中编写这段代码来计算 n! 的最后一个非零数字。对于更大的数字来说,某些东西似乎不太适用。我不明白为什么,因为代码非常简单。 52!它应该打印 4,但它打印 8。

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int n;
    cin >> n;

    int lastDigit = 1;
    for(int i = 2; i <= n; i++)
    {
        lastDigit = lastDigit * i;
        while(lastDigit % 10 == 0)
        {
            lastDigit /= 10;
        }

        lastDigit %= 10;
    }

    cout << lastDigit;
    
    return 0;
}

您能解释一下出了什么问题吗?

c++ math factorial number-theory
1个回答
-1
投票

现在的人们甚至不知道如何获得这样一个基本的价值,这一事实让我非常恼火。你有没有想过使用长数乘法?这将是最有效的内存/速度方法;这不像你正在处理阶乘这样长的数字。我认为8来自量子干涉。希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.