Problem 52: Permutierte Vielfache

Gesucht wird die kleinste Ganzzahl, deren Vielfache (2 – 6) genau die selben Ziffern enthalten! [das englische Original]

Die Lösung dieses Problems gestaltet sich als sehr trivial, da ich meine vorhandene Klasse für große Zahlen einfach durch eine Methode ergänzen musste, die eine Zahl mit sortierten Ziffern zurück gibt:

public LargeNumber getWithSortedDigits() {
   LargeNumber ret = clone();
   Arrays.sort( ret.data );
   return ret;
}

Damit braucht es dann nur noch eine Schleife, die erstaunlich schnell die Lösung findet:

@Override
public String solve() {
 
   boolean found = false;
   LargeNumber one = new LargeNumber( 1 );
   LargeNumber num = new LargeNumber( 0 );
 
   while( !found ) {
      num = num.add( one );
      LargeNumber sorted = num.getWithSortedDigits();
      if( num.mult( 2 ).getWithSortedDigits().equals( sorted ) ) {
         IO.infoln( "found " + num + " > 2" );
         if( num.mult( 3 ).getWithSortedDigits().equals( sorted ) ) {
            IO.infoln( "\t > 3" );
            if( num.mult( 4 ).getWithSortedDigits().equals( sorted ) ) {
               IO.infoln( "\t\t > 4" );
               if( num.mult( 5 ).getWithSortedDigits().equals( sorted ) ) {
                  IO.infoln( "\t\t\t > 5" );
                  if( num.mult( 6 ).getWithSortedDigits().equals( sorted ) ) {
                     IO.infoln( "\t\t\t\t > 6" );
                     found = true;
                  }
               }
            }
         }
      }
   }
 
   return num.toString();
}

Den vollständigen Quellcode der Klasse für die Lösung des Problems 52 kann man sich hier anschauen!

<< Problem 51 Übersicht Problem 53 >>

Willkommen in Nico Dannebergs Netzwerk

%d Bloggern gefällt das: