Wieviele Zahlen sind das?

D

Dkl764

Tag zusammen,
hat einer eine Idee wieviele Zahlen das sind ? ..

Ich habe 100.000 Zahlen:
von 0 bis 99.999 .

Soweit klar.

Jetzt muss ich jedoch noch dazu zählen, das jede Zahl folgendermaßen gezählt werden kann, hier ein Beispiel anhand der Zahl 6892:
6892
06892
006892

In diesem Beispiel würden bei der Zahl "6892" noch zwei weitere Zahlen dazugezählt werden müssen.
Nun habe ich daher dann eine weitaus höhere Zahl als 100.000 .
Aber wie errechne ich diese Zahl, wenn ich alle zusammenrechnen möchte?

Kennt jemand dafür einen Algorythmus, einen Rechner, irgendetwas ?
Sicherlich gibt es in der Mathematik für diese Rechnung einen Namen, ein Algorythmus. Aber ich kenne mich damit kein bisschen aus.
Ich benötige nur das Ergebnis und vielleicht wenn Ihr wollt auch den Lösungsweg.

Nein, dies ist keine Hausaufgabe, sondern benötige ich für ein Script, welche ich gerade in der Programmiersprache PureBASIC schreibe.

MFG,
Duellking
 
Ich kenne jetzt zwar PureBasic nur vom Hören aber diesen Code solltest du entsprechend umwandeln können.


Visual Basic:
maximum = 100000
anzahl = maximum
laenge = Len(maximum)

For a = 1 To maximum
    If laenge > Len(a) Then
        anzahl = anzahl + (laenge - Len(a))
    ElseIf laenge = Len(a) Then
        a = maximum
    End If
Next a

MsgBox anzahl
 
Ich habe es mal mit einem anderen Ansatz in PHP gelöst
PHP:
$max = 100000;
//Array erstellen mit allen Zahlen von 0 bis 10'000
$res = $nums = range(0, $max);
//Für jede Zahelnnlänge die Schleife durchgehen
for($len = 1; $len <= strlen($max); $len++){
    //Mit jeder Zahl aus dem ürsprünglichen Range die Länge vergleichen
    foreach($nums as $num){
        if(strlen($num) < $len){
            //Den entsprechenden Wert mit 0 aufgefüllt erstellen
            $res[] = str_pad($num, $len, '0', STR_PAD_LEFT);
        }
    }
}
//Alle Einträge zählen
echo count($res).'<br />';

Ausgabe: 211111 (übrigens, genau [Anzahl Ziffern] mehr als die Lösung von tombe)

Wenn ich das mit verschiedenen Zahlen teste:
Code:
100'000 = 211'111
     20 =      31
    551 =     662

Dann komme ich auf die folgende Logik
Code:
[wert] + (Zahl aus 1er-Ziffern in der Länge von [wert])

100'000 = 211'111 = 100'000 + 111'111
     20 =      31 = 20 + 11
    551 =     662 = 551 + 111
 

Wenn 20 die größte Zahl ist, dann habe ich die Zahlen von 1 bis 20 (ergibt Anzahl = 20).
Dann muss ich noch 01, 02, 03, 04, 05, 06, 07, 08, 09 dazu zählen was 9 Zahlen sind.

Somit kommt doch als Gesamtzahl nicht 31 sondern 29 raus.

Bei 551 erhalte ich als Ergebnis 659 (1 - 551 [ = 551 ], 01 - 09 [ = 9 ], 001 - 099 [ = 99 ])
 
Hi.

Bildungsvorschrift: max + Summe(i = 0, i <= floor(log10(max)), 10^i)

@tombe: Du hast 00 vergessen. Außerdem kommt es drauf an ob man die obere Grenze mitzählt oder nicht (in die obere Formel i = 1 oder i = 0 setzen).

Gruß
 
Zurück