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 <iostream>
#include <math.h>
using namespace std;

int main() {
    
    int N;
    bool* prime;
    long long* n;
    long long ans = 1;
    
    cin >> N;
    
    prime = new bool[N+1];
    n = new long long[N+1];
    
    for ( int i = 0; i < N+1; i++ ) {
        prime[i] = true;
        n[i] = 0;
    }
    
    for ( int i = 2; i <= N; i++ ) {
        if ( prime[i] ) {
            for ( int j = 2; i*j <= N; j++ ) {
                prime[i*j] = false;
            }
        }
    }
    
    for ( int i = 2; i <= N; i++ ) {
        if ( prime[i] ) {
            long long count = 1;
            n[i] = 1;
            for ( int j = 2; i*j <= N; j++ ) {
                n[i*j] = n[j] + 1;
                count += n[j] + 1;
            }
            
            ans *= count + 1;
            
            ans = ans % ( 1000000000 + 7 );
            
            for ( int k = 0; k < N+1; k++ ){
                n[k] = 0;
            }
        }
    }
    
    cout << ans << endl;
    
    delete[] prime;
    delete[] n;
    
    return 0;
}