Das folgende Problem wurde in einem Interview gestellt. Geben Sie eine Zahl 11 n (wobei n
÷ [0, 1000]
), erhalten Sie die Anzahl der 1
s im Ergebnis. Zum Beispiel n = 3, 11 = 1331, so würde das erwartete Ergebnis seine 2. Oder bei n = 6, 11 = 1.771.561, würde das erwartete Ergebnis 3.Anzahl der Einsen im Ergebnis von 11 berechnen^
Mein erster Gedanke war dass es etwas mit dem pascal's triangle und binomial coefficients zu tun hatte (denn wie wir wissen, funktioniert pow(11, 1000)
einfach nicht, zumindest in C).
Ich dachte durch einfaches Iterieren über die Spalten im Pascal-Dreieck sollte mir das Ergebnis geben, aber das funktioniert eindeutig nicht.
Also bin ich irgendwie jetzt fest. Mein nächster Gedanke war, eine Art von bignum library
zu verwenden, um das Problem zu lösen, aber meiner Meinung nach muss es einen anderen Weg geben, um diese Art von Aufgabe zu lösen.
Update Ich habe vergessen zu erwähnen, dass ich diese Aufgabe mit C/Objective-C lösen sollte.
Sie keine bignum Bibliothek benötigen um 11 :-) zu multiplizieren –
Python die Anzahl der '1' s in '11^100000' in etwa' 2.09s', so dass für Ihre Zwänge zählen kann, Die Bignum-Bibliothek sollte funktionieren. Ich glaube nicht, dass es irgendeine analytische Lösung für dieses Problem gibt. – Blender
Klingt wie ein großer Kandidat für die Vorverarbeitung. – cheeken