5.03 Действия над цифрами числа
Ошибка.
Попробуйте повторить позже
Автомат получает на вход четырехзначное число . По этому числу строится новое число
по таким
правилам:
1. Последняя цифра числа увеличивается на единицу;
2. Последняя цифра числа переставляется в начало числа;
3. Пункты повторяются
раз.
4. Вывод получившегося числа .
Примечание: В процессе работы алгоритма не должно происходить ситуаций переполнения (когда последняя цифра числа 9 и она увеличивается на единицу)
Пример: при исходных числах и
автомат выведет число
.
Укажите наибольшее число такое, что при
сумма цифр числа
равна 19, и третья
цифра числа
равна
.
Программное решение:
В этой задаче мы ищем наибольшее четырёхзначное число k, такое что после пяти повторений определённого преобразования сумма цифр полученного числа M равна 19, а третья цифра числа M равна 7. Чтобы смоделировать работу автомата, мы перебираем все числа от 1000 до 9999 включительно с помощью цикла for i in range(1000, 10000). Для каждого числа i мы преобразуем его в список цифр с помощью list(map(int, str(i))), чтобы можно было легко изменять отдельные цифры. Далее мы выполняем n = 5 итераций преобразования: на каждой итерации проверяем, равна ли последняя цифра 9, и если да, останавливаем процесс, так как переполнения не допускаются; если последняя цифра меньше 9, увеличиваем её на единицу и переставляем её в начало списка, сдвигая остальные цифры вправо. Для этого используем конструкцию n = [n[i - 1] for i in range(4)], которая формирует новый список, где последняя цифра становится первой. Одновременно ведём счётчик counter, чтобы отслеживать, сколько раз успешно произошло изменение цифры. После пяти итераций проверяем, что сумма цифр получившегося числа равна 19 (sum(n) == 19), третья цифра равна 7 (n[2] == 7), и что все пять итераций прошли без переполнений (counter == 5). Если все условия выполняются, выводим число i с помощью print(i).
for i in range(1000, 10000): # Перебираем все четырёхзначные числа от 1000 до 9999 включительно n = list(map(int, str(i))) # Преобразуем число i в список его цифр, чтобы можно было легко изменять цифры counter = 0 # Счётчик успешных итераций, которые прошли без переполнения for j in range(5): # Выполняем 5 итераций преобразования числа if n[-1] == 9: # Проверяем, равна ли последняя цифра 9, чтобы не допустить переполнения break # Если последняя цифра равна 9, прекращаем преобразования else: n[-1] += 1 # Увеличиваем последнюю цифру числа на 1 n = [n[i - 1] for i in range(4)] # Переставляем последнюю цифру в начало списка, остальные сдвигаются вправо counter += 1 # Увеличиваем счётчик успешных итераций if sum(n) == 19 and n[2] == 7 and counter == 5: # Проверяем все условия: сумма цифр, третья цифра и количество успешных итераций print(i) # Если условия выполнены, выводим число i
Аналитическое решение:
Запишем исходное число k в таком виде: .
Если , то новое число будет представлено в виде
.
Заметим, что сумма цифр нового числа
на
больше чем сумма цифр исходного числа
. Тогда
сумма цифр исходного числа
есть
. Также заметим, что если на третьей позиции в
числе
стоит
, то верно
, откуда
; Значит, необходимо подобрать
такие
, чтобы их сумма была равна
, и число
было максимально. Такое число
.
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!