Problem:
Score : 400 points

Problem Statement

You are given an integer N. Among the divisors of N! (= 1 \times 2 \times ... \times N), how many Shichi-Go numbers (literally "Seven-Five numbers") are there?

Here, a Shichi-Go number is a positive integer that has exactly 75 divisors.

Note

When a positive integer A divides a positive integer B, A is said to a divisor of B.
For example, 6 has four divisors: 1, 2, 3 and 6.

Constraints

1 \leq N \leq 100

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

Print the number of the Shichi-Go numbers that are divisors of N!.

Sample Input 1

9

Sample Output 1

0

There are no Shichi-Go numbers among the divisors of 9! = 1 \times 2 \times ... \times 9 = 362880.

Sample Input 2

10

Sample Output 2

1

There is one Shichi-Go number among the divisors of 10! = 3628800: 32400.

Sample Input 3

100

Sample Output 3

543

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<list>
#include<queue>
#include<deque>
#include<algorithm>
#include<numeric>
#include<utility>
#include<complex>
#include<memory>
#include<functional>
#include<cstring>

using namespace std;

typedef long long i64;
typedef unsigned long long u64;

#ifdef LDEBUG
#define debug(x) cout << #x << ":" << x << endl
#else
#define debug(...)
#endif

#define REP(i,n) for(int i=0; i<n; ++i)

int isnp[105];
int cc[105];

void _p(void){
        isnp[1] = 1;
        for (int i=2; i<105; i++) {
                if (isnp[i] == 1)
                        continue;
                for (int j=2; i*j<105; j++) {
                        isnp[i*j] = 1;
                }
        }
}

void cnt(u64 m) {
        for (int i=2; i<=m; i++) {
                if (isnp[i])
                        continue;
                u64 t = 0;
                u64 j = i;
                while (j <= m) {
                        t += m / j;
                        j *= i;
                }
                cc[i] = t;
        }
}

u64 n;


int main(){
        cin.tie(0);
        ios::sync_with_stdio(false);

        _p();

        cin >> n;
        cnt(n);

        int r = 0;
        int f=0,t=0;
        for(int i=2; i<105; i++) {
                if (cc[i] >= 2) t++;
                if (cc[i] >= 4) f++;
        }
        t -= f;
        r +=  3*f*(f-1)*(f-2)/6 + t*f*(f-1)/2;

        t = f = 0;
        for(int i=2; i<105; i++) {
                if (cc[i] >= 4) t++;
                if (cc[i] >= 14) f++;
        }
        t -= f;
        r +=   t*f + f*(f-1)/2;

        t = f = 0;
        for(int i=2; i<105; i++) {
                if (cc[i] >= 2) t++;
                if (cc[i] >= 24) f++;
        }
        t -= f;
        r +=   t*f + f*(f-1)/2;

        t = f = 0;
        for(int i=2; i<105; i++) {
                if (cc[i] >= 74) f++;
        }
        r +=   f;

        cout << r << endl;


        return 0;
}