Problem:
定义阶乘 n! = 1 × 2 × 3 × · · · × n。
请问 100! (100 的阶乘)有多少个约数。
题解:
分解因数:例如 5! = 1 × 2 × 3 × 4 × 5 = 2^3 × 3^1 × 5^1
百科:唯一分解定理
定理应用:
结果:39001250856960000
(注意代码中要用longlong)
#include<iostream>
#include<cmath>
typedef long long ll;
using namespace std;
ll cnt[105]={0};
int main()
{
for(int i=1;i<=100;i++)
{
int k=i;
for(int j=2;j<=i;j++)
{
while(k%j==0)
{
cnt[j]++;
k/=j;
}
}
}
ll ans=1;
for(int i=1;i<=100;i++)
{
ans*=(cnt[i]+1);
}
cout<<ans<<endl;
return 0;
}