Factors of Factorial
问题 G: Factors of Factorial
时间限制: 1 Sec 内存限制: 128 MB提交: 45 解决: 25
[提交][状态][讨论版][命题人:admin]
题目描述
You are given an integer N. Find the number of the positive divisors of N!, modulo 109+7.
Constraints
1≤N≤103
Constraints
1≤N≤103
输入
The input is given from Standard Input in the following format:
N
N
输出
Print the number of the positive divisors of N!, modulo 109+7.
样例输入
3
样例输出
4
提示
There are four divisors of 3! =6: 1, 2, 3 and 6. Thus, the output should be 4.
求n的阶乘的因子个数
将这个数表示成质因子的乘积
n!= 2^a + 3^b + 5^c + 7^d……
因子个数就是(a+1)*(b+1)*(c+1)*……
即对2来说可以选择0到a个
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MOD=1e9+7;
const int INF=1e5+100;
int f[INF];
int main()
{
int n,a;
cin>>n;
memset(f,0,sizeof(f));
for(int i=2; i<=n; i++){
a=i;
for(int j=2; j<=a; j++){
while(a%j==0){
f[j]++;
a=a/j;
}
}
if(a!=1) f[a]++;
}
ll ans=1;
for(int i=1; i<=n; i++){
if(f[i]!=0) ans=(ans*(f[i]+1))%MOD;
}
cout<<ans%MOD<<endl;
return 0;
}