На первой клетке лежит одно зерно. На каждой следующей клетке вдвое больше зерен, чем на предыдущей. Верните количество зерен на запрошенной клетке и общее количество зерен на клетках с 1 по 64. Запишите оба значения в виде десятичных строк, так как общее количество слишком велико для знакового 64-битного целого числа.
Реализуйте функцию chessboard_grains(square).
Ввод
square: Номер запрошенной клетки, начиная с 1.
Вывод
Верните две десятичные строки: [количество на запрошенной клетке, общее количество на всех 64 клетках].
Ограничения
1 ≤ square ≤ 64. Строки вывода содержат только десятичные цифры, без запятых, пробелов или ведущих нулей.
Примеры
Ввод:
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"};
Пояснение
Первые шесть значений: 1, 2, 4, 8, 16, 32. Общее количество на доске: 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"};
Пояснение
На первой клетке лежит 1 зерно. Второй результат всегда относится ко всем 64 клеткам, а не только к выбранному префиксу.
Ссылки
Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.