![]() |
Zahl auf Zahlenpalindrom hin überprüfen
Hallo ihr,
wie würdet ihr überprüfen, ob die Zahl ein Zahlenpalindrom ist? Nun ist die "String"-Variante ziemlich langsam (800 - 500 ms für die ersten 1.000.000 Zahlen (die getestet werden)). Wenn man aber die Zahlen bis 2^63-1 (also sozusagen MaxInt64) überprüft, ist man dann mehrere Jahrtausende dabei. Nun ein Teil könnte ausgeschlossen werden, wie zum Beispiel alle mit 0 endenden Zahlen (je nach Definition). MfG xZise |
Re: Zahl auf Zahlenpalindrom hin überprüfen
Wenn du alle Zahlen von 1..MaxInt64 überprüfen willst, hast du somit auch MaxInt64 Überprüfungen vorzunehmen. Nehmen wir nur einmal an, daß eine vertretbare Zeit für diese Aufgabe 1 Tag sei. Dann darf im Schnitt für jede Zahl nur 1/100000000000000000 Sekunde benötigt werden. Nehmen wir weiter an, es gäbe eine Möglichkeit, die Überprüfung einer Zahl mit einem einzigen Prozessortakt auszuführen. Dann brauchen wir bei handelsüblichen Prozessoren (ca. 3GHz) immer noch knapp 36000 Prozessoren, um diese Leistung zu erbringen.
Fazit: Die Aufgabenstellung ist heutzutage mit vertretbarem Aufwand nicht zu lösen! Wie wärs, wenn du die Palindrome zusammensetzt? Damit schließt tu per Definition schon mal alle Nicht-Palindrome aus. Ob die Laufzeit dadurch aber in einen realistischen Bereich gelangt, weiß ich auch nicht... |
Re: Zahl auf Zahlenpalindrom hin überprüfen
Okay das klingt ja schon mal gut und unrealistisch. Aber wir setze ich den Zahlenpalindrome am besten "zusammen"? Außerdem muss sie durch eine beliebige andere Zahl teilbar sein (ohne Rest).
MfG xZise |
Re: Zahl auf Zahlenpalindrom hin überprüfen
Zitat:
- konvertiere in String - mache eine invertierte Kopie davon (= Reihenfolge der Ziffern umdrehen) - setze beide zusammen - in Zahl zurück konvertieren Zitat:
|
Re: Zahl auf Zahlenpalindrom hin überprüfen
Das klingt irgendwie stark nach der Aufgabe vier des aktuellen Bundeswettbewerbs Mathematik.
|
Re: Zahl auf Zahlenpalindrom hin überprüfen
Zitat:
zu prüfen ob denn ein Palindrom vorliegt oder nicht. Ist eine einstellige Zahl auch schon ein Palindrom? Grüße Klaus |
Re: Zahl auf Zahlenpalindrom hin überprüfen
Zitat:
Zitat:
Zitat:
Naja ich wollte EIGENTLICH nur wissen, wie man schnell ermittelt ob die Zahl n ein Palindrom ist. Dass sie noch ein vielfaches einer Zahl ist hätte ich selber hinbekommen. Erst nachdem du mir zeigtest, wie lange das dauert, habe ich gedacht, dass man da etwas rausholen könnte. MfG xZise |
Re: Zahl auf Zahlenpalindrom hin überprüfen
isses wirklich so schwer?
müßten doch alle 6- und 5-stelligen Zahlenpalindroms zur Basis 10 sein? (andere Stellenanzahlen analog)
Delphi-Quellcode:
Var i: Integer;
For i := 1 to 999 do If i mod 10 <> 0 Then Memo1.Lines.Add(Format('%d%d%d%.3d', [i mod 10, i div 10 mod 10, i div 100 mod 10, i])); For i := 1 to 999 do If i mod 10 <> 0 Then Memo1.Lines.Add(Format('%d%d%.3d', [i mod 10, i div 10 mod 10, i])); Zitat:
Zitat:
[edit] na toll, kaum macht man mal nebenbei noch was, schreiben Andere och sowas ... nur früher -.-° [add] billige Lösung ... und dann noch die anderen Stellenanzahlen durchgehn Zitat:
Delphi-Quellcode:
For i := 1 to 999 do
If i mod 10 <> 0 Then Begin If (i + i mod 10 * 100000 + i div 10 mod 10 * 10000 + i div 100 mod 10 * 1000) mod 81 = 0 Then Memo1.Lines.Add(Format('%d%d%d%.3d', [i mod 10, i div 10 mod 10, i div 100 mod 10, i])); If (i + i mod 10 * 10000 + i div 10 mod 10 * 1000) mod 81 = 0 Then Memo1.Lines.Add(Format('%d%d%.3d', [i mod 10, i div 10 mod 10, i])); end; |
Re: Zahl auf Zahlenpalindrom hin überprüfen
Zitat:
Ein Programm nützt hier zwar recht wenig, da es nur nachweist, dass es Palindrome gibt, die die Bedingung erfüllen, dass steht aber auch schon in der Aufgabe (ebenso eigentlich wie man ein solches Palindrom bastelt) und ist kein Beweis dafür. Dennoch sollte der Nachweis von sowas bei laufenden Wettbewerben nicht diskutiert werden. |
Re: Zahl auf Zahlenpalindrom hin überprüfen
Wie gesagt liefere ich damit ja keine Lösung sondern nur eine Anzahl von Palindromen.
Zu himitsu: Hmmm ... 98 mod 10 ist doch ungleich 0 oder? Aber das ist doch kein Palindrom? MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz