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: Wrong Answer)

#include <iostream>
#include <cmath>
#include <vector>
using namespace std;

#define modn 1000000007
vector<int> count;
vector<int> primenum;

void findprime(int n); 
void primefac(int n);
int main(){
	int n;
	cin >> n;
	if(n==1){
		cout << "1" << endl;
		return 0;
	}
	findprime(n);
	primefac(n);
	long long a=1;
	for(int i=0; i<count.size(); i++){
		a *= (count[i]+1);
		a %= modn;
	}
	cout << a << endl;

	//cin >> a;
	return 0;
}

void findprime(int n){
	primenum.push_back(2);
	int s=sqrt(n);
	bool flag;
	for(int i=3; i<=n; i+=2){
		flag=1;
		for(int j=3; j<=s; j+=2){
			if(i%j==0){
				flag=0;
				break;
			}
		}
		if(flag){
			primenum.push_back(i);
			//cout << i << endl;
		}
	}
}

void primefac(int n){
	count.resize(primenum.size());
	int m=0;
	for(int i=0; i<primenum.size(); i++){
		for(int j=1; pow(primenum[i],j)<n; i++){
			m += int(n / pow(primenum[i], j))*j;
		}
		count.push_back(m);
		//cout << m << endl;
	}
}