Введём новую операцию «зачёркивание» —
удаление из числа любой одной цифры так, чтобы оставшиеся в числе цифры соединились, образовав новое число, не начинающееся с 0
. Например, из числа 1023
одной такой операцией можно получить числа 123
, 103
и 102
.
Никита применил не более двух операций зачёркивания к числу 484642485
и получил в результате число, делящееся на 36
. Сколько различных чисел мог получить Никита?
def count_numbers(number, deletions):
# базовый случай - если число зачеркиваний равно нулю
if deletions == 0:
# проверяем, делится ли число на 36
if number % 36 == 0:
return 1
else:
return 0
# инициализируем счетчик уникальных чисел
unique_numbers = 0
# проходим по каждой цифре в числе
for i in range(len(str(number))):
# удаляем цифру из числа
new_number = int(str(number)[:i] + str(number)[i+1:])
# рекурсивно вызываем функцию для нового числа с уменьшенным числом зачеркиваний
unique_numbers += count_numbers(new_number, deletions - 1)
return unique_numbers
# исходное число
number = 484642485
# количество зачеркиваний
deletions = 2
# вызываем функцию
result = count_numbers(number, deletions)
В данном решении мы последовательно удаляем каждую цифру из исходного числа, получаем новое число и рекурсивно вызываем функцию с этим числом и уменьшенным числом зачеркиваний. Если число зачеркиваний равно нулю, то мы проверяем, делится ли текущее число на 36. Если да, то мы добавляем его в счетчик уникальных чисел. В конце функции возвращаем количество уникальных чисел.
Таким образом, в результате выполнения данного кода будет вычислено количество различных чисел, которые можно получить Никитой после не более чем двух операций зачеркивания и которые делятся на 36.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет