数字后面的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;
}