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: Accepted)

#include <iostream>
#include<iomanip>
#include <algorithm>
#include <vector>
#include <string>
#include <utility>
#include <queue>
#define INF 1e9+7
#define rep(i,n) for(int i=0;i<n;i++)
#define NO cout<<"NO"<<endl;
#define YES cout << "YES"<<endl;
#define No cout << "No"<<endl;
#define Yes cout << "Yes"<<endl;
#define all(a) a.begin(),a.end()
using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;

//(int)'a'は97 (int)'A'は65 (int)'1'は49
//おまじない

int f[101]={0};

void fact(int n){
    int sub=n;
    for(int i=2;i<=n;i++){
        while(sub%i==0){
            f[i]++;
            sub=sub/i;
        }
    }
    
    return;
}

int main(){
    
    int n;
    cin >> n;
    int a1=0,a2=0,a3=0;
    
    for(int i=1;i<=n;i++){
        fact(i);
    }
    
    for(int i=2;i<=n;i++){
        if(f[i]>=74)a3++;
    }
    
    for(int i=2;i<=n;i++){
        for(int j=2;j<=n;j++){ //5*15 3*25 1*75
            if(i!=j){
            if(f[i]>=4&&f[j]>=14)a1++;
            if(f[i]>=14&&f[j]>=4)a1++;
            if(f[i]>=2&&f[j]>=24)a1++;
            if(f[i]>=24&&f[j]>=2)a1++;
            }
        }
    }
    
    for(int i=2;i<=n;i++){
        for(int j=2;j<=n;j++){
            for(int k=2;k<=n;k++){
                if(i!=j&&j!=k&&k!=i){
                    if(f[i]>=2&&f[j]>=4&&f[k]>=4)a2++;
                    if(f[i]>=4&&f[j]>=2&&f[k]>=4)a2++;
                    if(f[i]>=4&&f[j]>=4&&f[k]>=2)a2++;
                }
            }
        }
    }

    a1=a1/2;a2=a2/6;
    
    cout << a1+a2+a3<<endl;
    
    
    return 0;
}