AcWing 1381. 阶乘
原题链接
简单
作者:
回头不是从前
,
2021-01-24 14:09:27
,
所有人可见
,
阅读 341
分解质因数,然后把2和5处理下就行了
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1010;
int sum[N];
void diff(int x) {
if(x < 2) return;
for(int i = 2; i <= x / i; ++i) {
if(x % i == 0) {
while(x % i == 0) {
sum[i]++;
x /= i;
}
}
}
if(x > 1) sum[x] ++;
}
int main() {
int n, res = 1;
cin >> n;
for(int i = 2; i <= n; ++i) diff(i);
int t = min(sum[2], sum[5]);
sum[2] -= t, sum[5] -= t;
for(int i = 2; i <= n; ++i) {
if(sum[i] != 0) {
for(int j = 0; j < sum[i]; ++j) {
res = (res * (i % 10)) % 10;
}
}
}
cout << res;
return 0;
}