Условие
Square 1 holds one grain. Each later square holds twice as many grains as the previous square. Return both the count on the requested square and the total on squares 1 through 64. Write each count as decimal text, because the board total is too large for a signed 64-bit integer.
Implement chessboard_grains(square).
Input
square: The requested square, numbered from 1.
Output
Return two decimal strings: [count on the requested square, total on all 64 squares].
Ограничения
1 ≤ square ≤ 64. Output strings contain decimal digits only, with no commas, spaces, or leading zeros.
Примеры
Ввод:
square = 6
Ожидаемый вывод:
expected = ["32", "18446744073709551615"]
Ввод:
long long square = 6;
Ожидаемый вывод:
std::vector<std::string> expected = {"32", "18446744073709551615"};
Ввод:
long square = 6;
Ожидаемый вывод:
string[] expected = new string[] {"32", "18446744073709551615"};
Пояснение
The first six counts are 1, 2, 4, 8, 16, 32. The board total is 1 + 2 + … + 2⁶³ = 2⁶⁴ − 1.
Ввод:
square = 1
Ожидаемый вывод:
expected = ["1", "18446744073709551615"]
Ввод:
long long square = 1;
Ожидаемый вывод:
std::vector<std::string> expected = {"1", "18446744073709551615"};
Ввод:
long square = 1;
Ожидаемый вывод:
string[] expected = new string[] {"1", "18446744073709551615"};
Пояснение
The first square holds 1 grain. The second output always refers to all 64 squares, not just the requested prefix.
Как подступиться
Сначала попробуйте сами, затем открывайте подсказки по одной.
Подсказка 1
Each square doubles the previous square, so the requested count depends only on its position.
Подсказка 2
The total across all 64 squares is a geometric progression, and it grows far beyond normal integer limits.
Подсказка 3
Return both values as plain decimal text, and watch that the first square is one, not zero.
Ожидаемая сложность
O(1) time, O(1) extra space
Ссылки
Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.