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.Linq;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        var N = int.Parse(Console.ReadLine());
        var primeDict = new long[N + 1];

        // 素因数分解
        for (int i = N; i >= 2; i--)
        {
            var primes = PrimeFactors(i);
            foreach (var prime in primes)
            {
                primeDict[prime]++;
            }
        }

        var dp = new int[N + 1, 76];
        dp[0, 1] = 1;
        for (int i = 1; i < N + 1; i++)
        {
            for (int j = 1; j < 76; j++)
            {
                for (int k = 0; k < primeDict[i] + 1 && (k + 1) * j <= 75; k++)
                {
                    dp[i, (k + 1) * j] += dp[i - 1, j];
                }
            }
        }

        Console.WriteLine(dp[N, 75]);
    }


    /**
     * 素因数分解
     * <see cref="https://qiita.com/y_miyoshi/items/da814d96e8890224aad3"/>
     */
    public static IEnumerable<long> PrimeFactors(long n)
    {
        long i = 2;
        long tmp = n;

        while (i * i <= n) //※1
        {
            if (tmp % i == 0)
            {
                tmp /= i;
                yield return i;
            }
            else
            {
                i++;
            }
        }
        if (tmp != 1) yield return tmp;//最後の素数も返す
    }


}