Wie kann man nachfolgende Nullen aus einer Ganzzahl, die keine Zeichenketten verwendet, schnell entfernen?"Trimmen" rechte Nullen vom ganzzahligen Typ
Zum Beispiel muss 1000
1
werden, 6789000
muss 6789
werden.
Einfache Lösung wiederholt wird Modulo-Division durch 10^max_exponent
nehmen, ..., 10000
, 1000
, 100
, 10
(oder in umgekehrter Reihenfolge), und so weiter und es 0
zu vergleichen.
Aber kann es jemand schneller machen?
Pre-Machen Sie eine Tabelle, die alle Zahlen auf ihre Werte mit den Hinter entfernt Nullen. Also 'Tabelle [1000] => 1',' Tabelle [1001] => 1001', 'Tabelle [1010] => 101',' Tabelle [6789000] => 6789', 'Tabelle [6789001] => 6789001' . Für jede Zahl N gebe einfach den N-ten Eintrag aus der Tabelle zurück. Sehr schnell. – HostileFork
@HostileFork was ist, wenn max_number vom Typ int64_t ist, also ~ 9 * 10^18? :) – vladon
@vladon - um fair zu sein, sein Weg ist schnell, was Sie gefragt haben. – Sean