2016-10-30 4 views
0

Ich muss einen Algorithmus vorbereiten, der n-th Ziffer (von rechts gezählt) der größten Zahl durch B-1 teilbar zeigt, wobei B die Basis des angegebenen Nummernsystems ist. Die Nummer darf nur aus Ziffern bestehen, die in der Eingabe angegeben sind.Finden der größten Zahl durch andere teilbar

Also zum Beispiel: Die Basis der Nummer System ist 3, die bereitgestellten Ziffern sind [0, 1, 2] und ich bin auf der Suche nach 2nd Ziffer. Also muss ich 2nd Ziffer der größten Anzahl von 0, 1, 2 teilbar durch 2 finden. In diesem Fall wird das Ergebnis 2 sein, weil die größte Anzahl 20 war.

Ich habe versucht, diesen Algorithmus auf viele Arten zu finden, aber ich kann keine Verbindung zwischen Eingabe und Ausgabe finden.

+0

Könnten Sie einige weitere Beispiele geben Sie bitte? – Abrixas2

+0

@ Abrixas2 Wenn die Basis "10" ist und die Ziffern "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" sind, ist die "8te" Zahl "7", weil "" . Und wenn die Basis "4" ist und die Ziffern "[0, 0, 1, 1, 1, 1]" sind, ist die "1ste" Zahl "0", weil "11100" – Hadenir

Antwort

0

Sie über Algorithmus sind gefragt, um im Grunde Ich tun d:

  1. generieren größte Anzahl von Ziffern (es bedeutet, sortieren sie in desc Reihenfolge)
  2. zu überprüfen, ob es teilbar durch B-1
  3. wenn ja sucess zurückkehrt nur n-ten Stelle, wenn kein Sprung zu Schritt 1, aber die nächste Nummer (von swaping verschiedenen Ziffern)

Zweiten Ansatz erzeugen. In den meisten Fällen nicht effizient.

  1. generieren alle möglichen Zahlen
  2. Sortieren in desc Reihenfolge
  3. von B zuerst teilbar Get - 1 und das Rück n-ten Stelle
+0

Ich dachte darüber nach, aber da ist Zeitlimit. Ich kann keine ganze Zahl erzeugen, sondern nur die genaue n-te Ziffer (irgendwie) berechnen. – Hadenir

+0

@Hadenir Wie können Sie die n-te Nummer wissen, wenn Sie die ganze Zahl nicht erzeugt haben? Gibt es ein Limit für B? Wenn B klein ist, haben Sie vielleicht gute Formeln, um zu überprüfen, ob die Zahl durch 2,3,4,5,8,9,10,11,25 teilbar ist, aber wenn B irgendeine Zahl sein kann, denke ich nicht, dass es möglich ist ohne Nummer nach Nummer zu generieren und zu prüfen. – Kacper

Verwandte Themen