Problem:
Score : 300 points

Problem Statement

You are given an integer N.
Find the number of the positive divisors of N!, modulo 10^9+7.

Constraints

1≤N≤10^3

Input

The input is given from Standard Input in the following format:

N

Output

Print the number of the positive divisors of N!, modulo 10^9+7.

Sample Input 1

3

Sample Output 1

4

There are four divisors of 3! =6: 1, 2, 3 and 6. Thus, the output should be 4.

Sample Input 2

6

Sample Output 2

30

Sample Input 3

1000

Sample Output 3

972926972

Solution in C++ (G++ 4.6.4) (judge verdict: Accepted)

#include<iostream>
#include<iomanip>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
using namespace std;
typedef long long ll;
const ll P = 1e9+7;
int N;
int primes[1000];
int cnt[1000];

int main(){
    cin >> N;

    int nprime = 1;
    primes[0] = 2;
    for(int i=3; i<=1000; i+=2){
        bool ok = true;
        for(int j=0; j<nprime; j++){
            if(i%primes[j] == 0){
                ok = false;
                break;
            }
        }
        if(ok){
            primes[nprime++] = i;
        }
    }

    for(int i=2; i<=N; i++){
        int x = i;
        int j=0;
        while(x > 1){
            if(x%primes[j] == 0){
                x /= primes[j];
                cnt[j]++;
            }
            else{
                j++;
            }
        }
    }

    ll ans=1;
    for(int i=0; i<nprime; i++){
        //cout << primes[i] << " " << cnt[i] << endl;
        if(cnt[i] ==0) continue;
        ans = (ans*(cnt[i]+1))%P;
    }

    cout << ans << endl;
    return 0;
}