Problem 38: Pandigitale Vielfache

Gesucht ist die größte neunstellige pandigitale Zahl, die als Aneinanderreihung der Produkte einer Zahl mit den Zahlen von 1 bis n dargestellt werden kann! [ das englische Original ]

Da die Lösung des Problems für alle n = 1 trivial wäre, gilt die Sonderbedingung, dass n > 1 sein muss. Somit ergibt sich dennoch eine Obergrenze, da die zu multiplizierende Zahl kleiner als 10.000 sein muss.

Zum Test, ob die Aneinanderreihung der Produkte den gewünschten Kriterien entspricht, muss neben der Länge (gleich 9) geprüft werden, um die Zahl pandigital ist. Dafür steht bereits seit dem Problem 32 eine entsprechende Methode in der Mathe-Hilfsklasse bereit. Damit ist die Lösung dann leicht zu finden:

@Override
public String solve() {
   int num = 2;
   long max = 0;
 
   while( num < 10000 ) {
      int fac = 1;
      String res = "";
 
      while( res.length() < 9 ) {
         res += num * fac;
         fac++;
      }
 
      if( res.length() == 9 && Mathe.isPandigital( res ) ) {
         IO.debugln( "found: " + num + " * [1.." + (fac-1) + "] = " + res );
         long cur = Long.parseLong( res );
         max = ( max < cur ) ? cur : max;
      }
 
      num++;
   }
 
   return IO.l2s( max );
}

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

<< Problem 37 Übersicht Problem 39 >>

Willkommen in Nico Dannebergs Netzwerk

%d Bloggern gefällt das: