Эмма задумалась о том, что получится, если число, состоящее из одних шестёрок, возвести в квадрат. Помогите ей перемножить эти числа. Поскольку результат может оказаться очень большим, выведите только одну цифру на интересующей девочку позиции.
Формат входных данных
Две строки входных данных содержат два натуральных числа: n
—
длина числа, состоящего из одних шестёрок, и k
—
интересующая Эмму позиция в квадрате числа (1
≤
n ≤
109
, 1
≤
k
≤
2×n
).
Формат выходных данных
Выведите одну десятичную цифру —
ответ на вопрос задачи.
n - количество шестёрок в исходном числе
k - интересующая позиция
result = 1
base = 6
while n > 0:
n -= 1
result = (result * base) % 100
base = (base * base) % 100
output = result / 10^(k-1) % 10
Давайте теперь разберем этот псевдокод по шагам:
1. Инициализируем переменные `result` и `base`. `result` будет хранить результат вычислений, а `base` будет хранить текущее число 6, которое мы возводим в степень.
2. Запускаем цикл, который будет выполняться пока `n > 0`. В каждой итерации мы будем уменьшать `n` на 1.
3. Затем мы умножаем `result` на `base` и находим остаток от деления на 100 (`result * base % 100`), чтобы получить только последние две цифры.
4. Затем мы обновляем `base`, умножая его на самого себя и находим остаток от деления на 100 (`base * base % 100`).
5. После завершения цикла у нас будет в переменной `result` результат возведения числа, состоящего из `n` шестёрок, в квадрат.
6. Наконец, мы используем формулу `result / 10^(k-1) % 10`, чтобы получить интересующую нас цифру.
Таким образом, мы можем решить задачу, найдя интересующую нас цифру в квадрате числа, состоящего из одних шестёрок. Мы просто последовательно возводим число 6 в степень и находим только последние две цифры, чтобы избежать переполнения. Затем мы можем найти интересующую нас цифру при помощи деления и остатка от деления.
Программа на псевдокоде будет выглядеть следующим образом:
n, k = read_integers()
result = 1
base = 6
while n > 0:
n -= 1
result = (result * base) % 100
base = (base * base) % 100
output = result / 10^(k-1) % 10
write(output)
Это решение имеет сложность O(n), где n - количество шестёрок в исходном числе. Поскольку максимальное значение n равно 10^9, которое является достаточно большим числом, решение может быть довольно медленным. Однако, используя приведенный алгоритм, мы можем вычислить результат даже для очень больших чисел.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет