# Difference between revisions of "Euler problems/121 to 130"

m (Corrected the links to the Euler project) |
(Solution added for problem 122) |
||

Line 11: | Line 11: | ||

Finding the most efficient exponentiation method. |
Finding the most efficient exponentiation method. |
||

− | Solution: |
||

+ | Solution using a depth first search, pretty fast : |
||

<haskell> |
<haskell> |
||

− | problem_122 = undefined |
||

+ | import Data.List |
||

+ | import Data.Array.Diff |
||

+ | import Control.Monad |
||

+ | |||

+ | depthAddChain 12 branch mins = mins |
||

+ | depthAddChain d branch mins = foldl' step mins $ nub $ filter (> head branch) |
||

+ | $ liftM2 (+) branch branch |
||

+ | where |
||

+ | step da e | e > 200 = da |
||

+ | | otherwise = |
||

+ | case compare (da ! e) d of |
||

+ | GT -> depthAddChain (d+1) (e:branch) $ da // [(e,d)] |
||

+ | EQ -> depthAddChain (d+1) (e:branch) da |
||

+ | LT -> da |
||

+ | |||

+ | baseBranch = [2,1] |
||

+ | |||

+ | baseMins :: DiffUArray Int Int |
||

+ | baseMins = listArray (1,200) $ 0:1: repeat maxBound |
||

+ | |||

+ | problem_122 = sum . elems $ depthAddChain 2 baseBranch baseMins |
||

</haskell> |
</haskell> |
||

## Revision as of 23:13, 1 September 2007

## Contents

## Problem 121

Investigate the game of chance involving coloured discs.

Solution:

```
problem_121 = undefined
```

## Problem 122

Finding the most efficient exponentiation method.

Solution using a depth first search, pretty fast :

```
import Data.List
import Data.Array.Diff
import Control.Monad
depthAddChain 12 branch mins = mins
depthAddChain d branch mins = foldl' step mins $ nub $ filter (> head branch)
$ liftM2 (+) branch branch
where
step da e | e > 200 = da
| otherwise =
case compare (da ! e) d of
GT -> depthAddChain (d+1) (e:branch) $ da // [(e,d)]
EQ -> depthAddChain (d+1) (e:branch) da
LT -> da
baseBranch = [2,1]
baseMins :: DiffUArray Int Int
baseMins = listArray (1,200) $ 0:1: repeat maxBound
problem_122 = sum . elems $ depthAddChain 2 baseBranch baseMins
```

## Problem 123

Determining the remainder when (pn − 1)n + (pn + 1)n is divided by pn2.

Solution:

```
problem_123 = undefined
```

## Problem 124

Determining the kth element of the sorted radical function.

Solution:

```
problem_124 = undefined
```

## Problem 125

Finding square sums that are palindromic.

Solution:

```
problem_125 = undefined
```

## Problem 126

Exploring the number of cubes required to cover every visible face on a cuboid.

Solution:

```
problem_126 = undefined
```

## Problem 127

Investigating the number of abc-hits below a given limit.

Solution:

```
problem_127 = undefined
```

## Problem 128

Which tiles in the hexagonal arrangement have prime differences with neighbours?

Solution:

```
problem_128 = undefined
```

## Problem 129

Investigating minimal repunits that divide by n.

Solution:

```
problem_129 = undefined
```

## Problem 130

Finding composite values, n, for which n−1 is divisible by the length of the smallest repunits that divide it.

Solution:

```
problem_130 = undefined
```