Problem
Feld 1 enthält ein Korn. Jedes nachfolgende Feld enthält doppelt so viele Körner wie das vorherige Feld. Gib sowohl die Anzahl auf dem angeforderten Feld als auch die Gesamtsumme auf den Feldern 1 bis 64 zurück. Schreibe jede Anzahl als Dezimaltext, da die Gesamtsumme des Brettes zu groß für einen vorzeichenbehafteten 64-Bit-Integer ist.
Implementiere chessboard_grains(square).
Eingabe
square: Das angeforderte Feld, nummeriert ab 1.
Ausgabe
Gib zwei Dezimalstrings zurück: [Anzahl auf dem angeforderten Feld, Gesamtsumme auf allen 64 Feldern].
Einschränkungen
1 ≤ square ≤ 64. Die Ausgabestrings enthalten nur Dezimalziffern, ohne Kommas, Leerzeichen oder führende Nullen.
Beispiele
Eingabe:
square = 6
Erwartete Ausgabe:
expected = ["32", "18446744073709551615"]
Eingabe:
long long square = 6;
Erwartete Ausgabe:
std::vector<std::string> expected = {"32", "18446744073709551615"};
Eingabe:
long square = 6;
Erwartete Ausgabe:
string[] expected = new string[] {"32", "18446744073709551615"};
Erläuterung
Die ersten sechs Anzahlen sind 1, 2, 4, 8, 16, 32. Die Gesamtsumme des Brettes ist 1 + 2 + … + 2⁶³ = 2⁶⁴ − 1.
Eingabe:
square = 1
Erwartete Ausgabe:
expected = ["1", "18446744073709551615"]
Eingabe:
long long square = 1;
Erwartete Ausgabe:
std::vector<std::string> expected = {"1", "18446744073709551615"};
Eingabe:
long square = 1;
Erwartete Ausgabe:
string[] expected = new string[] {"1", "18446744073709551615"};
Erläuterung
Das erste Feld enthält 1 Korn. Die zweite Ausgabe bezieht sich immer auf alle 64 Felder, nicht nur auf das angeforderte Präfix.
So gehst du vor
Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.
Hinweis 1
Jedes Feld verdoppelt das vorherige, also hängt die gesuchte Menge nur von seiner Position ab.
Hinweis 2
Die Summe über alle 64 Felder ist eine geometrische Reihe und wächst weit über normale Integer-Grenzen hinaus.
Hinweis 3
Gib beide Werte als reinen Dezimaltext zurück, und beachte, dass das erste Feld 1 ist, nicht 0.
Erwartete Komplexität
Zeit O(1), zusätzlicher Speicher O(1)
Referenzen
Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.