我尝试在 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;
}
您能解释一下出了什么问题吗?
现在的人们甚至不知道如何获得这样一个基本的价值,这一事实让我非常恼火。你有没有想过使用长数乘法?这将是最有效的内存/速度方法;这不像你正在处理阶乘这样长的数字。我认为8来自量子干涉。希望这有帮助!