diff --git a/src/main/java/mattrixwv/ProjectEuler/Driver.java b/src/main/java/mattrixwv/ProjectEuler/Driver.java index 9d8565f..3717240 100644 --- a/src/main/java/mattrixwv/ProjectEuler/Driver.java +++ b/src/main/java/mattrixwv/ProjectEuler/Driver.java @@ -17,7 +17,7 @@ public class Driver{ private static final ArrayList PROBLEM_NUMBERS = new ArrayList(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 67)); + 31, 67)); private static enum SELECTIONS{SOLVE, DESCRIPTION, LIST, EXIT, SIZE}; private static final Scanner input = new Scanner(System.in); @@ -138,6 +138,7 @@ public class Driver{ case 28 : problem = new Problem28(); break; case 29 : problem = new Problem29(); break; case 30 : problem = new Problem30(); break; + case 31 : problem = new Problem31(); break; case 67 : problem = new Problem67(); break; } return problem; diff --git a/src/main/java/mattrixwv/ProjectEuler/Problems/Problem31.java b/src/main/java/mattrixwv/ProjectEuler/Problems/Problem31.java new file mode 100644 index 0000000..633a606 --- /dev/null +++ b/src/main/java/mattrixwv/ProjectEuler/Problems/Problem31.java @@ -0,0 +1,64 @@ +//ProjectEulerJava/src/main/java/mattrixwv/ProjectEuler/Problems/Problem31.java +//Matthew Ellison +// Created: 06-19-20 +//Modified: 06-19-20 +//How many different ways can £2 be made using any number of coins? +//Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/JavaClasses +/* + Copyright (C) 2020 Matthew Ellison + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ +package mattrixwv.ProjectEuler.Problems; + +public class Problem31 extends Problem{ + private static final int desiredValue = 200; + private int permutations; + public Problem31(){ + super("How many different ways can 2 pounds be made using any number of coins?"); + permutations = 0; + } + public void solve(){ + //Start the timer + timer.start(); + + //Start with 200p and remove the necessary coins with each loop + for(int pound2 = desiredValue; pound2 >= 0;pound2 -= 200){ + for(int pound1 = pound2;pound1 >= 0;pound1 -= 100){ + for(int pence50 = pound1;pence50 >= 0;pence50 -= 50){ + for(int pence20 = pence50;pence20 >= 0;pence20 -= 20){ + for(int pence10 = pence20;pence10 >= 0;pence10 -= 10){ + for(int pence5 = pence10;pence5 >= 0;pence5 -= 5){ + for (int pence2 = pence5; pence2 >= 0; pence2 -= 2){ + ++permutations; + } + } + } + } + } + } + } + + //Stop the timer + timer.stop(); + + //Save the result + result = String.format("There are %d ways to make 2 pounds with the given denominations of coins", permutations); + } +} + +/* Results: +There are 73682 ways to make 2 pounds with the given denominations of coins +It took 17.899 microseconds to solve this problem. +*/