2020蓝桥杯b组国赛 阶乘约数:
问题描述:
定义阶乘 n! = 1 × 2 × 3 × ··· × n。
请问 100! (100 的阶乘)有多少个约数。
概念:任意一个正整数 X 都可以表示成若干个质数乘积的形式,即 X=p1^a1*p2^a2...pk^ak
约数个数 = (a1 + 1)(a2 + 1)…(ak + 1)。
using namespace std;
typedef long long ll;
int p[100];
int main(){
for(int i=2;i<=100;i++){
int n=i;
for(int j=2;j<=n/j;j++){
while(n%j==0){
p[j]++;
n/=j;
}
}
if(n>1) p[n]++;
}
ll ans = 1;
for(int i=2;i<=100;i++){
if(p[i]>0){
ans *= (p[i]+1);
}
}
cout<<ans;
return 0;
}