题目:
题解:
我们先筛出质数,再对
n
!
n!
n! 分解质因数关于
n
!
n!
n! 分解质因数的方法可以看我的上一篇博客 阶乘分解
将
n
!
n!
n!分解为以下形式
对于每一个分解出来的质因数,可以从
0
0
0选到
c
i
ci
ci,所以有
c
i
+
1
ci+1
ci+1种可能,所以约数个数为
需要注意的是我们这里分解的是 n ! n! n!,而最终需要的是 ( n ! ) 2 (n!)^2 (n!)2 ,所以对于每一次分解的 c i ci ci应该乘以 2 2 2
#include <bits/stdc++.h>
using namespace std;
long long pri[1000005];
long long primes[1000005];
long long mod=1e9+7;
int con=0;
void prime(long long n)
{
for(int i=1;i<=n;i++) pri[i]=1;
pri[1]=0;
for(int i=2;i<=n;i++)
{
if(pri[i])
{
primes[++con]=i;
for(int j=2;j*i<=n;j++)
{
pri[j*i]=0;
}
}
}
}
int main()
{
long long n;
cin>>n;
prime(n);
long long ans=1;
for(int i=1;i<=con;i++)
{
long long m=n;
long long c=0;
long long a=primes[i];
while(m)
{
c+=(m/a);
m/=a;
}
ans=(ans*(2*c+1)%mod)%mod;
}
cout<<ans<<endl;
return 0;
}