Все задачи
Легко Решено: 0 Процент решений: 0%

Удвоение зерен на шахматной доске

Вычислите количество зерен на выбранной клетке и общее количество на всех 64 клетках.

На первой клетке лежит одно зерно. На каждой следующей клетке вдвое больше зерен, чем на предыдущей. Верните количество зерен на запрошенной клетке и общее количество зерен на клетках с 1 по 64. Запишите оба значения в виде десятичных строк, так как общее количество слишком велико для знакового 64-битного целого числа.

Реализуйте функцию chessboard_grains(square).

Ввод

square: Номер запрошенной клетки, начиная с 1.

Вывод

Верните две десятичные строки: [количество на запрошенной клетке, общее количество на всех 64 клетках].

Ограничения

1 ≤ square ≤ 64. Строки вывода содержат только десятичные цифры, без запятых, пробелов или ведущих нулей.

Примеры

Пример 1
Ввод:
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.

Пример 2
Ввод:
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. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.