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;
}
该程序计算100的阶乘(100!)的约数数量。通过分解1到100之间的每个数的质因数,并使用约数公式(a1+1)(a2+1)…(ak+1)来计算总约数个数。最终输出为约数的总数。
1115

被折叠的 条评论
为什么被折叠?



