Problem 4: Größtes Palindrom-Produkt

Gesucht wird das größte Zahlenpalindrom, das man als Produkt zweier dreistelliger Zahlen erzeugen kann! [das englische Original]

Für die Lösung des vierten Problems habe ich mir erstmals eine eigene private Methode in der Klasse entwickelt. Diese prüft eine gegebene Nummer, ob sie eine Palindrom-Nummer ist:

   private boolean isPalindrome( int x ) {
      int a = x, n = 0;

      while( a > 0 ) {
         n *= 10;
         n += a % 10;
         a /= 10;
      }

      return ( x == n );
   }

Damit ist dann die Lösung des Problems nicht mehr all zu schwierig. Mit zwei in einander verschachtelten Schleifen werden alle Paare von (100 x 100) bis (999 x 999) berechnet und getestet. Um ein wenig Performance zu gewinnen, läuft die innere Schleife nur vom aktuellen Wert der äußeren Schleife bis 999. Dem Kommutativgesetz sei Dank kann man sich doppelte Paare sparen:

   public String solve() {
      int cur = 0, max = 0;

      for( int i = 100; i < 1000; i++ ) {
         for( int j = i; j < 1000; j++ ) { cur = i * j; if( isPalindrome( cur ) ) { IO.debug( "new: " + i + " * " + j + " = " + cur ); max = ( cur > max ) ? cur : max;
               IO.debugln( " max: " + max );
            }
         }
      }

      return IO.i2s( max );
   }

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

<< Problem 3 Übersicht Problem 5 >>

Kommentar verfassen

Willkommen in Nico Dannebergs Netzwerk

%d Bloggern gefällt das: