Project Euler/52
From charlesreid1
Problem
Problem 52 on Project Euler: https://projecteuler.net/problem=52
Solution
Link to solution on git.charlesreid1.com: https://git.charlesreid1.com/cs/euler/src/master/scratch/Round2_050-070/052
Explanation of Solution
The key here was structuring the program so that it uses chained method calls, so that you stop multiplying and move on to the next candidate as soon as you have a failure. That, combined with the concept that we wanted the same SET of digits, meant we needed a method that would turn an arbitrary integer into a set of digits, and we could compare as we go.
Here's how the final product looks:
public class PermutedMultiples { public static void main(String[] args) { boolean found = false; Set<Integer> digits = new HashSet<Integer>(); int n = 100; while(!found) { // 1x Set<Integer> s = getSet(n); if(s.equals(getSet(2*n))) { if(s.equals(getSet(3*n))) { if(s.equals(getSet(4*n))) { if(s.equals(getSet(5*n))) { if(s.equals(getSet(6*n))) { System.out.println("x = "+n); found = true; } } } } } n++; } } public static Set<Integer> getSet(int n) { Set<Integer> result = new HashSet<Integer>(); while(n!=0) { int r = n%10; n = n/10; result.add(r); } return result; } }
Flags
Project Euler project euler notes
Round 1: Problems 1-20 Problem 1 · Problem 2 · Problem 3 · Problem 4 · Problem 5 · Problem 6 · Problem 7 · Problem 8 · Problem 9 · Problem 10 Problem 11 · Problem 12 · Problem 13 · Problem 14 · Problem 15 · Problem 16 · Problem 17 · Problem 18 · Problem 19 · Problem 20 Round 2: Problems 50-70 Problem 51 · Problem 52 · Problem 53 · Problem 54 · Problem 55 · Problem 56 · Problem 57 · Problem 58 · ... · Problem 61 · Problem 62 · Problem 63 · Problem 64 · Problem 65 · Problem 66 · Problem 67 Round 3: Problems 100-110 Problem 100 · Problem 101 · Problem 102 Round 4: Problems 500-510 Problem 500 · Problem 501 * · Problem 502 * Round 5: Problems 150-160 Round 6: Problems 250-260 Round 7: Problems 170-180
|