euler/ipython/EulerProblem031.ipynb

3138 lines
45 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Euler Problem 31\n",
"\n",
"In England the currency is made up of pound, £, and pence, p, and there are eight coins in general circulation:\n",
"\n",
"1p, 2p, 5p, 10p, 20p, 50p, £1 (100p) and £2 (200p).\n",
"\n",
"It is possible to make £2 in the following way:\n",
"\n",
"1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p\n",
"\n",
"How many different ways can £2 be made using any number of coins?"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"Let's do it non-recursive."
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"200\n",
"195\n",
"190\n",
"185\n",
"180\n",
"175\n",
"170\n",
"165\n",
"160\n",
"155\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"190\n",
"185\n",
"180\n",
"175\n",
"170\n",
"165\n",
"160\n",
"155\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"180\n",
"175\n",
"170\n",
"165\n",
"160\n",
"155\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"170\n",
"165\n",
"160\n",
"155\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"160\n",
"155\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"180\n",
"175\n",
"170\n",
"165\n",
"160\n",
"155\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"170\n",
"165\n",
"160\n",
"155\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"160\n",
"155\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"160\n",
"155\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"150\n",
"145\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"140\n",
"135\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"130\n",
"125\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"120\n",
"115\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"110\n",
"105\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"100\n",
"95\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"90\n",
"85\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"80\n",
"75\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"70\n",
"65\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"60\n",
"55\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"50\n",
"45\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"40\n",
"35\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n",
"30\n",
"25\n",
"20\n",
"15\n",
"10\n",
"5\n",
"20\n",
"15\n",
"10\n",
"5\n",
"10\n",
"5\n"
]
},
{
"data": {
"text/plain": [
"72161"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = 200\n",
"c = 0\n",
"\n",
"if r % 200 == 0:\n",
" c += 1\n",
"for p200 in range(r // 200):\n",
" r200 = r - p200 * 200\n",
" if r200 % 100 == 0:\n",
" c += 1\n",
" for p100 in range(r200 // 100):\n",
" r100 = r200 - p100 * 100\n",
" if r100 % 50 == 0:\n",
" c += 1\n",
" for p50 in range(r100 // 50):\n",
" r50 = r100 - p50 * 50\n",
" if r50 % 20 == 0:\n",
" c += 1\n",
" for p20 in range(r50 // 20):\n",
" r20 = r50 - p20 * 20\n",
" if r20 <= 0:\n",
" break\n",
" if r20 % 10 == 0:\n",
" c += 1\n",
" for p10 in range(r20 // 10):\n",
" r10 = r20 - p10 * 10\n",
" if r10 % 5 == 0:\n",
" c += 1\n",
" for p5 in range(r10 // 5):\n",
" r5 = r10 - p5 * 5\n",
"\n",
" if r5 % 2 == 0:\n",
" c += 1\n",
" for p2 in range(r5 // 2):\n",
" r2 = r5 - p2 * 2\n",
" c += 1\n",
"\n",
"c"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1785\n"
]
},
{
"ename": "AssertionError",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAssertionError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-5-16f141428450>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32massert\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;36m73682\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mAssertionError\u001b[0m: "
]
}
],
"source": [
"print(s)\n",
"assert(s == 73682)\n",
"print(s)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"completion_date": "Fri, 25 Aug 2017, 13:02",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.4"
},
"tags": [
"recursion",
"coins"
]
},
"nbformat": 4,
"nbformat_minor": 2
}