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# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using static MyIO;


public class D
{
	public static void Main()
	{
		int N = GetInt();

		List<int> primeList = sieve(N);
		int[] numExponent = new int[N+1];
		for(int i = 2; i <= N; i++)
		{
			int tmp = i;
			foreach (int prime in primeList)
			{
				while(tmp % prime == 0)
				{
					tmp /= prime;
					numExponent[prime]++;
				}
				if(tmp == 1)
					break;
			}
		}

		int geq74 = numExponent.Where(x => (x >= 74)).Count();
		int geq24 = numExponent.Where(x => (x >= 24)).Count();
		int geq14 = numExponent.Where(x => (x >= 14)).Count();
		int geq4 = numExponent.Where(x => (x >= 4)).Count();
		int geq2 = numExponent.Where(x => (x >= 2)).Count();
		int ans = 
			geq74 + 
			geq24 * (geq2 - 1) + 
			geq14 * (geq4 - 1) + 
			(geq4 * (geq4 - 1) * (geq2 - 2))/2;
		Console.WriteLine(ans);
	}

	private static List<int> sieve(int N)
	{
		List<int> primeList = new List<int>();
		bool[] isPrime = new bool[N+1];
		for(int i = 2; i <= N; i++)
			isPrime[i] = true;

		for(int i = 2; i <= N; i++)
		{
			if(isPrime[i])
			{
				primeList.Add(i);
				for(int j = 2 * i; j <= N; j += i)
					isPrime[j] = false;
			}
		}

		return primeList;
	}
}


public static class MyIO
{
	private static string[] args = null;
	private static int num = -1;
	private static int used = -1;

	private static string getArg()
	{
		if(used == num)
		{
			args = Console.ReadLine().Split(' ');
			num = args.Length;
			used = 0;
		}
		return args[used++];
	}

	public static int GetInt(){ return int.Parse(getArg()); }
	public static long GetLong(){ return long.Parse(getArg()); }
	public static double GetDouble(){ return double.Parse(getArg()); }
	public static string GetString(){ return getArg(); }
}