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++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <algorithm>
#include <iostream>
#include <numeric>
#include <string>
#include <vector>

using namespace std;
using ll = long long;
using pll = pair<ll, ll>;

const auto MOD = static_cast<ll>(1e9 + 7);

ll N, ans;
vector<bool> prime;
vector<ll> memo;

int main() {
    cin >> N;
    prime.resize(N + 1, true); memo.resize(N + 1, 0);
    prime[0] = prime[1] = false;
    for (size_t i = 2; i * i <= N; i++) {
        if (prime[i]) {
            for (size_t j = 2; i * j <= N; j++) {
                prime[i * j] = false;
            }
        }
    }
    for (auto i = 1; i <= N; i++) {
        ll div = 2;
        ll n = i;
        while (n > 1) {
            while (!(n % div)) {
                n /= div;
                memo[div]++;
            }
            while (!prime[++div]);
        }
    }
    ans = 1;
    for (const auto& item : memo) {
        ans *= item + 1;
        ans %= MOD;
    }
    cout << ans % MOD << endl;
    return 0;
}