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 Java8 (OpenJDK 1.8.0) (judge verdict: Accepted)

import java.util.*;
import java.util.concurrent.ThreadLocalRandom;

public class Main {
    static int maxturn;
    static int maxval = 10000007;
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        /*int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        int n = a*a*b*b*c;
        n = n*n;*/
        int n = sc.nextInt();
        boolean[] pri = new boolean[n+1];
        Arrays.fill(pri,true);
        ArrayList<Integer> prime = new ArrayList<>();
        for(int i=2;i<=n;i++){
            if(!pri[i]) continue;
            prime.add(i);
            for(int j=i;j<=n;j+=i) pri[j]=false;
        }
        HashMap<Integer,Integer> priIdx = new HashMap<>();
        for(int i=0;i<prime.size();i++) priIdx.put(prime.get(i),i);
        int[] cnt = new int[prime.size()];
        for(int i=2;i<=n;i++){
            int cur = i;
            for(int j=2;j<=cur;j++){
                while(cur%j==0){
                    int idx = priIdx.get(j);
                    cnt[idx]++;
                    cur /= j;
                }
            }
        }
        int c2=0,c4=0,c14=0,c24=0,c74=0;

        for(int i=0;i<cnt.length;i++){
            if(cnt[i]>=2) c2++;
            if(cnt[i]>=4) c4++;
            if(cnt[i]>=14) c14++;
            if(cnt[i]>=24) c24++;
            if(cnt[i]>=74) c74++;
        }
        int ans = c4*(c4-1)*(c2-2)/2+c24*(c2-1)+c14*(c4-1)+c74;
        System.out.println(ans);
    }
}