Dies ist eine Interviewfrage, auf die ich gestoßen bin: find K
erste Ziffern der dezimalen Darstellung von 1/N
. Es sieht so aus, als müssten wir einfach 10^K/N
berechnen, um das Problem zu lösen. Macht das Sinn ? Es sieht so aus, als würde mir etwas fehlen, weil die Lösung zu einfach ist.So finden Sie K erste Ziffern der Dezimaldarstellung von 1/N
Antwort
Gerade Grundschul lange Teilung implementieren:
int value = 1;
bool outputDecimalSeparator = false;
int digitsOutput = 1;
while(digitsOutput <= k) {
if (value == 0) {
Console.Write(0);
}
else {
if (value < n) {
Console.Write(0);
value *= 10;
}
else {
Console.Write(value/n);
value %= n;
}
}
if (outputDecimalSeparator == false) {
outputDecimalSeparator = true;
Console.Write('.');
}
digitsOutput++;
}
Console.WriteLine();
Der Zweig auf value == 0
ist zu erkennen, wenn 1/n
eine Abschluss Darstellung von weniger als k
Ziffern hat.
Hier ist n
der Nenner in 1/n
und k
ist die Anzahl der Ziffern in der dezimalen Darstellung von 1/n
zu drucken.
Beachten Sie, dass Sie durch die Änderung value *= 10
zu value *= b
auch die b-ary-Darstellung von 1/n
drucken können.
Wenn es erste k Ziffern ist, ist es nicht sehr einfach, den Zähler mit 10^k zu multiplizieren, und so wird es einfacher, durch N zu teilen? Und wenn wir die Antwort brauchen, die Dezimaldarstellung, dann enden wir damit, das Ergebnis erneut durch 10^K zu teilen, so dass die vorherige Multiplikation ungültig wird.
Dies ist die gleiche Frage, die OP stellt, dies ist keine Antwort. – user470379
@ user470379, OP hatte ein wenig Verwirrung in seiner Frage. Wenn er nur die ersten K Ziffern benötigt, dann ist das sehr einfach, da wir es aus Bequemlichkeit machen. –
Die Berechnung von 10^K/N kann bei großen K und kleinen N sehr teuer sein. Dies ist wahrscheinlich näher an einer guten Lösung: long division. So teilten wir Zahlen vor Taschenrechnern. :)
Offensichtlich sollten Sie diesen Algorithmus nur ausführen, bis es K Ziffern ergibt.
- 1. erste und letzte k Ziffern der Nummer n^n
- 2. Anzahl der Ziffern für N ** K
- 3. Wie finden Sie optimale k in K-Means-Methode?
- 4. Finden von Ziffern in einer Zeichenfolge
- 5. Finden Permutation der Zeichenfolge der Länge k
- 6. Finden Sie doppelte mysql bis zu Ziffern
- 7. Finden Sie k-th minimale Summe von jeder möglichen Untermenge
- 8. Finden von PI-Ziffern mit Monte Carlo
- 9. So finden Sie das erste Zeichen in einer C++ - Zeichenfolge
- 10. Erste 2 Ziffern-Float-Zahl nicht als
- 11. Finden Sie mögliche Bijektion zwischen Zeichen und Ziffern
- 12. So finden Sie Median
- 13. jquery finden Sie das erste Element
- 14. Excel: Finden Sie k und m in "kx + m" Textzeichenfolge
- 15. Finden Sie die Nummer mit den maximalen Ziffern darin
- 16. So finden Sie die Länge eines LPCSTR
- 17. Regex für Ziffern in Unix finden Befehl
- 18. So finden Sie Bildverschlüsselungsalgorithmus
- 19. Verwenden von Regex, um Teile eines Pfades zu finden, wo der erste Teil nur n Ziffern ist
- 20. erste Transaktion finden
- 21. Finden von k nächsten Nummern zu einer gegebenen Nummer
- 22. So finden Sie Quelle der temporären Tabellen
- 23. So finden Sie minimale Anzahl von Unterteilungen
- 24. So finden Sie, ob der Aufruf von unregister_chrdev() erfolgreich war
- 25. So finden Sie Subdomain von der aktuellen URL ASP-Classic
- 26. So finden Sie die Versionsnummer von libxxx.a
- 27. So finden Sie den Installationspfad von IronPython
- 28. Finden Sie die erste Folge von Zahlen in einer Zeichenfolge?
- 29. So finden Sie das erste Element, das von JQuery ausgeblendet wird
- 30. So finden Sie doppelte Feldkombination
Was ist, wenn N 3 ist? – Pointy
das würde nicht funktionieren, weil 1/8 == .125. Wenn k == 2 dann 10^2/8 = 12,5, was nicht hilft. Die Antwort, die du willst, ist 25, oder? Vielleicht sehe ich das falsch? –
Die letzten 3? oder die ersten 3? ... Ich hoffe, Sie wissen, dass es einige Zahlen mit der Darstellung gibt, die unendliche Ziffern haben ... 1/3, 1/9 –