Problem 29: Eindeutige Potenzen

Gesucht wird die Anzahl der eindeutigen Potenzen, die durch ab berechnet werden können, wobei sowohl a als auch b im Bereich von 2 bis 100 liegen! [das englische Original]

Die einzige Herausforderung dieses Problems liegt in der Tatsache, dass gewöhnliche Datentypen spätestens bei einer Potenz von 2020 ihre Bereichsgrenzen erreichen. Glücklicher Weise habe ich eine Klasse für große Zahlen. Diese musste ich nur um entsprechende Methoden für die Multiplikation und das Potenzieren erweitern und schon war die Lösung kein Problem:

@Override
public String solve() {
 
   int a = 2, b = 2;

   while( a <= 100 ) {
      LargeNumber n = new LargeNumber( a );
      while( b <= 100 ) {
         LargeNumber res = n.pow( b );
         if( ! mem.contains( res ) ) {
            IO.debugln( "new: a^b = " + a + "^" + b + " = " + res );
            mem.add( res );
         }
 
         b++;
      }
      a++;
      b = 2;
   }

   return IO.i2s( mem.size() );
}

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

<< Problem 28 Übersicht Problem 30 >>

Willkommen in Nico Dannebergs Netzwerk

%d Bloggern gefällt das: