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 <bits/stdc++.h>
using namespace std;
using ll = long long;

constexpr int mod = 1e9 + 7, lim = 1e3;

bool prime[lim+1];

void init(){
  for(int i=2; i<=lim; i++) prime[i] = true;

  for(int i=2; i<=lim; i++){
    if(prime[i]){
      for(int j=2; i*j <= lim; j++){
        prime[i*j] = false;
      }
    }
  }
}

int main(){
  int n; cin >> n;

  init(); 

  ll bk[n+1];
  memset(bk, 0, sizeof(bk));

  for(int i=2; i<=n; i++){
    for(int j=2; j <= i; j++){
      int mul = i;
      if(prime[j]){
        while(mul % j == 0){
          mul /= j;
          bk[j]++;
          bk[j] %= mod;
        }
      }
    }
  } 
  
  ll ans = 1;
  for(int i=1; i<=n; i++){
    if(bk[i]){
      ans *= bk[i]+1;
      ans %= mod;
    }
  }

  cout << ans << endl;

  return 0;
}