# Euler problems/31 to 40

## 1 Problem 31

Investigating combinations of English currency denominations.

Solution:

This is the naive doubly recursive solution. Speed would be greatly improved by use of memoization, dynamic programming, or the closed form.

```problem_31 = pence 200 [1,2,5,10,20,50,100,200]
where pence 0 _  = 1
pence n [] = 0
pence n denominations@(d:ds)
| n < d     = 0
| otherwise = pence (n - d) denominations
+ pence n ds```

## 2 Problem 32

Find the sum of all numbers that can be written as pandigital products.

Solution:

`problem_32 = undefined`

## 3 Problem 33

Discover all the fractions with an unorthodox cancelling method.

Solution:

`problem_33 = undefined`

## 4 Problem 34

Find the sum of all numbers which are equal to the sum of the factorial of their digits.

Solution:

`problem_34 = undefined`

## 5 Problem 35

How many circular primes are there below one million?

Solution:

`problem_35 = undefined`

## 6 Problem 36

Find the sum of all numbers less than one million, which are palindromic in base 10 and base 2.

Solution:

`problem_36 = undefined`

## 7 Problem 37

Find the sum of all eleven primes that are both truncatable from left to right and right to left.

Solution:

`problem_37 = undefined`

## 8 Problem 38

What is the largest 1 to 9 pandigital that can be formed by multiplying a fixed number by 1, 2, 3, ... ?

Solution:

`problem_38 = undefined`

## 9 Problem 39

If p is the perimeter of a right angle triangle, {a, b, c}, which value, for p ≤ 1000, has the most solutions?

Solution: We use the well known formula to generate primitive Pythagorean triples. All we need are the perimeters, and they have to be scaled to produce all triples in the problem space.

```problem_39 = head \$ perims !! indexMax
where  perims = group
\$ sort [n*p | p <- pTriples, n <- [1..1000 `div` p]]
counts = map length perims
Just indexMax = findIndex (== (maximum counts)) \$ counts
pTriples = [p |
n <- [1..250],
m <- [n+1..250],
even n || even m,
gcd n m == 1,
let a = m^2 - n^2,
let b = 2*m*n,
let c = m^2 + n^2,
let p = a + b + c,
p < 1000]```

## 10 Problem 40

Finding the nth digit of the fractional part of the irrational number.

Solution:

`problem_40 = undefined`