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.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AtCoder
{
    class Program
    {
        static void Main(string[] args)
        {
            var N = int.Parse(Console.ReadLine());

            var nums = new int[25];
            foreach(var i in Enumerable.Range(1, N))
            {
                var tmp = PrimeFactorize(i);
                foreach (var j in Enumerable.Range(0, nums.Length))
                {
                    nums[j] += tmp[j];
                }
            }

            var result = 0;
            //(1+74)
            foreach(var x in nums)
            {
                if (x >= 74) result++;
            }
            //(1+2)(1+24)
            foreach(var i in Enumerable.Range(0, nums.Length))
            {
                if(nums[i] >= 2)
                {
                    for(var j=i+1; j<nums.Length; j++)
                    {
                        if (nums[j] >= 24) result++;
                    }
                }
            }
            //(1+24)(1+2)
            foreach (var i in Enumerable.Range(0, nums.Length))
            {
                if (nums[i] >= 24)
                {
                    for (var j = i + 1; j < nums.Length; j++)
                    {
                        if (nums[j] >= 2) result++;
                    }
                }
            }
            //(1+4)(1+14) 5*15
            foreach (var i in Enumerable.Range(0, nums.Length))
            {
                if (nums[i] >= 4)
                {
                    for (var j = i + 1; j < nums.Length; j++)
                    {
                        if (nums[j] >= 14) result++;
                    }
                }
            }
            //(1+14)(1+4) 15*5
            foreach (var i in Enumerable.Range(0, nums.Length))
            {
                if (nums[i] >= 14)
                {
                    for (var j = i + 1; j < nums.Length; j++)
                    {
                        if (nums[j] >= 4) result++;
                    }
                }
            }
            //(1+2)(1+4)(1+4) 3*5*5
            foreach (var i in Enumerable.Range(0, nums.Length))
            {
                if (nums[i] >= 2)
                {
                    for (var j = i + 1; j < nums.Length; j++)
                    {
                        if(nums[j] >= 4)
                        {
                            for(var k=j+1; k<nums.Length; k++)
                            {
                                if (nums[k] >= 4) result++;
                            }
                        }
                    }
                }
            }

            //5*3*5
            foreach (var i in Enumerable.Range(0, nums.Length))
            {
                if (nums[i] >= 4)
                {
                    for (var j = i + 1; j < nums.Length; j++)
                    {
                        if (nums[j] >= 2)
                        {
                            for (var k = j + 1; k < nums.Length; k++)
                            {
                                if (nums[k] >= 4) result++;
                            }
                        }
                    }
                }
            }

            //5*5*3
            foreach (var i in Enumerable.Range(0, nums.Length))
            {
                if (nums[i] >= 4)
                {
                    for (var j = i + 1; j < nums.Length; j++)
                    {
                        if (nums[j] >= 4)
                        {
                            for (var k = j + 1; k < nums.Length; k++)
                            {
                                if (nums[k] >= 2) result++;
                            }
                        }
                    }
                }
            }

            Console.WriteLine(result);

        }

        static int[] PrimeFactorize(int val)
        {
            var primes = new int[] { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 };
            var nums = new int[primes.Length];
            var tmp = val;
            var cnt = 0;
            foreach(var p in primes)
            {
                while(tmp % p == 0)
                {
                    tmp = tmp / p;
                    nums[cnt] += 1;
                }
                cnt++;
            }

            return nums;
        }
    }
}