Problem 53 : Combinatoric selections

Problem Statement

There are exactly ten ways of selecting three from five, 12345:

123, 124, 125, 134, 135, 145, 234, 235, 245, and 345

In combinatorics, we use the notation,

\[\displaystyle \binom 5 3 = 10\]

In general,

\[\displaystyle \binom n r = \dfrac{n!}{r!(n-r)!}\]

where $r \le n$ , $n! = n \times (n-1) \times … \times 3 \times 2 \times 1$ and $0! = 1$

It is not until n=23, that a value exceeds one-million:

\[\displaystyle \binom {23} {10} = 1144066\]

How many, not necessarily distinct, values of $\displaystyle \binom n r$ for $1 \le n \le 100$ are greater than one-million?

Solution

dic=[1]

for i in range(1,101):
    val =dic[-1]*i
    dic.append(val)


def choose(n,r):
    sol = dic[n]//(dic[n-r]*dic[r])
    return sol

def func(maxi, valu): 
    count = 0
    for i in range(2,maxi+1):
        for j in range(1,i+1):
            val = choose(i,j)
            if  val>valu:
                count+=1         
    return count


print(func(100, 10**6))

Ouputs

4075