5.03 Действия над цифрами числа
Ошибка.
Попробуйте повторить позже
Автомат получает на вход какое-то число . По этому числу строится новое число
по
таким правилам:
1. умножается на число равное количеству десятков числа
2. K получившемуся числу прибавляется количество единиц числа
3. Вывод получившегося числа .
Например: число преобразовывается в
Укажите число, при вводе которого автомат выдает
Решение программой:
В этой задаче нам нужно найти такое число k (меньше 100), которое при определённых действиях автомата преобразуется в 538. Мы будем перебирать все двухзначные числа от 10 до 99, так как для однозначных чисел количество десятков будет равно нулю, и результат заведомо не достигнет 538. Перебор организуем с помощью цикла for k in range(10, 100), где переменная k на каждой итерации будет хранить текущее проверяемое число. Для того чтобы извлечь количество десятков числа k, мы сначала преобразуем его в строку с помощью str(k), а затем берём символ с индексом 0 — это первая цифра. Преобразуем её обратно в число функцией int(...) и используем в умножении на само k: k * int(str(k)[0]). Таким образом мы реализуем первый шаг алгоритма — умножение исходного числа на количество его десятков. Далее к полученному произведению нужно прибавить количество единиц числа k. Для этого снова берём строковое представление числа k, берём символ с индексом 1 (вторая цифра), преобразуем его в число функцией int(...) и прибавляем к предыдущему результату: m += int(str(k)[1]). Теперь в переменной m находится новое число, полученное по описанным правилам. Осталось проверить, совпадает ли оно с 538. Для этого используем условный оператор if m == 538:. Если условие выполняется, значит, текущее значение k подходит, и мы выводим его с помощью print(k). Так как в задаче достаточно найти одно такое число, после вывода используем команду break, чтобы остановить цикл и завершить поиск.
# Перебираем все двухзначные числа от 10 до 99 включительно for k in range(10, 100): # Вычисляем количество десятков числа k: # преобразуем k в строку, берём первый символ (индекс 0) и переводим обратно в число m = k * int(str(k)[0]) # Прибавляем количество единиц числа k: # преобразуем k в строку, берём второй символ (индекс 1) и переводим обратно в число m += int(str(k)[1]) # Проверяем, совпадает ли результат с 538 if m == 538: # Если совпадает, выводим найденное число k print(k) # Прерываем цикл, так как число найдено break
Решение руками:
Запишем исходное число в таком виде:
.
Тогда число можно записать следующим образом:
Также понятно, что и
Заметим, что при :
.
Тогда пусть :
;
;
;
Исходное число .
Специальные программы

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

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

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

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

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

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