Тема 5. Алгоритмы – анализ простейших алгоритмов

5.03 Действия над цифрами числа

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгоритмы – анализ простейших алгоритмов
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#7157

Автомат получает на вход какое-то число k(k <  100)  . По этому числу строится новое число M  по таким правилам:

   1. k  умножается на число равное количеству десятков числа k;

   2. K получившемуся числу прибавляется количество единиц числа k;

   3. Вывод получившегося числа M  .

Например: число 32  преобразовывается в 98.

Укажите число, при вводе которого автомат выдает 538.

Показать ответ и решение

Решение программой:

В этой задаче нам нужно найти такое число 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

Решение руками:

Запишем исходное число k  в таком виде: k = 10x  + y  .

Тогда число M  можно записать следующим образом: M  =  (10x +  y)x + y = 10x2 + xy + y.

Также понятно, что 0 ≤ x ≤  9  и 0 ≤ y ≤ 9

Заметим, что при x > 7  : 10x2 + xy + y > 538  .

Тогда пусть x = 7  : 490 + 8y =  538  ;

8y = 48  ;

y = 6  ;

Исходное число k = 76  .

Ответ: 76

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

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

Бесплатное онлайн-обучение

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

Налоговые вычеты

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

Специальное предложение
для учителей

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

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!