Данные задачи относятся к заданиям ЕГЭ по информатике, суть которых - анализ кода программы, содержащей циклы и ветвления. От решающего задачу требуется проанализировать ход выполнения программы, для этого необходимо знать особенности выполнения циклов, а так же суть работы операторов div и mod.
Оператор div выполняет целочисленное деление (без остатка), например, значением выражения 56 div 10 будет 5. Другой пример: 5 div 10 даёт 0, поскольку делимое меньше делителя.
Оператор mod выдаёт остаток от целочисленного деления, например, значением выражения 56 mod 10 будет 6. Другой пример: 5 mod 10 равно 5.
Теперь рассмотрим первый из предложенных алгоритмов.
- Цикл while выполняется до тех пор, пока число x остаётся большим 10. В конце каждого этапа выполнения цикла число х нацело делится на 10, то есть от него отсекается последняя цифра. Таким образом, если x - однозначное число, большее нуля, то цикл выполнится однократно, если x - двузначное - то двукратно и т.д. Таким образом, цикл предназначен для перебора цифр в числе x.
- Переменная c является вспомогательной, и на каждом шаге выполнения цикла представляет собой последнюю цифру числа x, значение которого меняется в цикле (см. пункт 1).
- Переменная a предназначена для суммирования всех цифр числа x: перед началом цикла она обнулена, на каждом шаге выполнения цикла к её значению прибавляется последняя цифра числа x.
- Переменная b предназначена для сохранения значения наименьшей цифры в числе x: перед началом цикла ей присвоено значение 10, далее, если текущее значение переменной c меньше b, то b присваивается значение c.
Итак, нужно, чтобы на выходе мы в качестве значения a получили бы 13, а значения b - 5 при наименьшем возможном x. В таком случае нам известно, что число x - двузначное, одна из его цифр - 5, а сумма цифр числа равняется 13. Очевидно, что данному условию удовлетворяет число 85: вторая цифра числа - это 8, а 85 больше 58.
Ответ: 58.
Теперь рассмотрим второй код.
- Цикл выполняется до тех пор, пока число x остаётся большим 100. После выполнения очередного шага цикла число x нацело делится на 100.
- Переменная a, обнуленная вначале, хранит количество выполненных шагов цикла, то есть мы знаем, что цикл должен выполниться дважды. То есть число x является четырехзначным, поскольку мы ищем наибольшее число.
- Переменная b, обнуленная вначале, хранит сумму остатков от целочисленного деления b на 100. Такая операция отсекает от цисла две его последние цифры.
Что это значит? Допустим, было введено число 1234. На первом шаге цикла получим:
b=0+(1234 mod 100)=34. То есть b - это число - последние две цифры числа x.
На втором шаге выполнения цикла число x будет равно 12 (1234 div 100=12). b=45+(12 mod 100)=34+12=46. То есть на втором шаге выполнения цикла мы к предыдущему значению прибавляем число - первые две цифры числа x, и полученная сумма выводится на печать.
Итак, мы знаем, что x - четырёхзначное число, сумма двух чисел - первых двух и последних двух цифр которого должна равняться 26). Надо разбить число 26 на подходящие слагаемые так, чтобы одно из них было максимально возможным. Получаем: 26=26+0
Наибольшим числом будет 2600.
Ответ: 2600
Подборка ссылок по решению таких задач:
Множество разобранных примеров похожих задач можно найти тут и тут.
Видеоурок с разбором типовой задачи
Презентация с типовыми алгоритмами