Problem 48: Selbstpotenzen

Gesucht werden die letzten 10 Ziffern der Reihe 1+ 2+ 3+ … + 999999 + 10001000 ! [das englische Original]

Da die meisten Programmiersprachen bereist bei Potenzen ab ca. 20 in der Genauigkeit nicht mehr ausreichend arbeiten, konnte ich glücklicher Weise auf meine Klasse für große Zahlen zurückgreifen. Bereits seit dem Problem 29 stand hier eine Methode für die Berechnung von Potenzen zur Verfügung. Nun musste ich für die Steigerung der Performance nur eine maximale Anzahl der Stellen einbauen, da alle Ziffern ab der 11. für die weitere Berechnung irrelevant sind.

Mit diesen Vorbereitungen ist die Lösung des Problem sehr übersichtlich:

@Override
public String solve() {
   LargeNumber sum = new LargeNumber( 0, 10 );
 
   for( int i=1; i<=1000; i++ ) {
      LargeNumber n = new LargeNumber( i, 10 );
      sum = sum.add( n.pow( i ) );
      IO.infoln( "+" + i + "^" + i +" = " + sum );
   }

   return sum.toString();
}

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

<< Problem 47 Übersicht Problem 49 >>

Willkommen in Nico Dannebergs Netzwerk

%d Bloggern gefällt das: