思路:质因数分解
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
int res = 1, d2 = 0, d5 = 0; //d2,d5分别表示质因式分解后2和5的个数
for (int i = 1; i <= n; i ++ ) //质因式分解后每有一对2和5,结尾就有一个0
{
int x = i;
while (x % 2 == 0) x /= 2, d2 ++ ;
while (x % 5 == 0) x /= 5, d5 ++ ;
res = res * x % 10; //这里是不包含2和5的部分
}
int k = min(d2, d5); //2和5的数量并不一定相同
//把多余的2或者5再乘回去
for (int i = 0; i < d2 - k; i ++ ) res = res * 2 % 10;
for (int i = 0; i < d5 - k; i ++ ) res = res * 5 % 10;
cout << res << endl;
return 0;
}