Вход
Быстрая регистрация
Если вы у нас впервые: О проекте FAQ
1

Как решать подобные задачи по ИВТ(Паскаль, подготовка к ЕГЭ)(см.)?

Роман4116 [911] 4 недели назад

подскажите пожалуйста, как решать подобные задачи. может есть видео, посвященное таким задачам?

задача. ниже записан алгоритм. Получив на вход число х, этот алгоритм печатает два числа: a и b. укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 13, а потом 5.

var x, a, b, c:integer;

begin

readln (x);

a:=0;

b:=10;

while x>0 do

begin

c:=x mod 10;

a:= a+c;

if c<b then b:=c;

x:=x div 10;

end;

writeln (a);

write (b);

end.

задача. имеется алгоритм. получив на вход число х, он печатает два числа a и b. нужно указать наибольшее из чисел х, при вводе которого алгоритм напечатает сначала 2, а потом 26.

var x, a, b:integer;

begin

readln (x);

a:=0;

b:=0;

while x>0 do

begin

a:=a+1;

b:=b+(x mod 100);

x:=x div 100;

end;

writeln (a);

write (b);

end.

если есть информация для тупых, как решить такие задачи, дайте пожалуйста ссылку.

бонус за лучший ответ (выдан): 5 кредитов
2

Данные задачи относятся к заданиям ЕГЭ по информатике, суть которых - анализ кода программы, содержащей циклы и ветвления. От решающего задачу требуется проанализировать ход выполнения программы, для этого необходимо знать особенности выполнения циклов, а так же суть работы операторов div и mod.

Оператор div выполняет целочисленное деление (без остатка), например, значением выражения 56 div 10 будет 5. Другой пример: 5 div 10 даёт 0, поскольку делимое меньше делителя.

Оператор mod выдаёт остаток от целочисленного деления, например, значением выражения 56 mod 10 будет 6. Другой пример: 5 mod 10 равно 5.

Теперь рассмотрим первый из предложенных алгоритмов.

  1. Цикл while выполняется до тех пор, пока число x остаётся большим 10. В конце каждого этапа выполнения цикла число х нацело делится на 10, то есть от него отсекается последняя цифра. Таким образом, если x - однозначное число, большее нуля, то цикл выполнится однократно, если x - двузначное - то двукратно и т.д. Таким образом, цикл предназначен для перебора цифр в числе x.
  2. Переменная c является вспомогательной, и на каждом шаге выполнения цикла представляет собой последнюю цифру числа x, значение которого меняется в цикле (см. пункт 1).
  3. Переменная a предназначена для суммирования всех цифр числа x: перед началом цикла она обнулена, на каждом шаге выполнения цикла к её значению прибавляется последняя цифра числа x.
  4. Переменная b предназначена для сохранения значения наименьшей цифры в числе x: перед началом цикла ей присвоено значение 10, далее, если текущее значение переменной c меньше b, то b присваивается значение c.

Итак, нужно, чтобы на выходе мы в качестве значения a получили бы 13, а значения b - 5 при наименьшем возможном x. В таком случае нам известно, что число x - двузначное, одна из его цифр - 5, а сумма цифр числа равняется 13. Очевидно, что данному условию удовлетворяет число 85: вторая цифра числа - это 8, а 85 больше 58.

Ответ: 58.

Теперь рассмотрим второй код.

  1. Цикл выполняется до тех пор, пока число x остаётся большим 100. После выполнения очередного шага цикла число x нацело делится на 100.
  2. Переменная a, обнуленная вначале, хранит количество выполненных шагов цикла, то есть мы знаем, что цикл должен выполниться дважды. То есть число x является четырехзначным, поскольку мы ищем наибольшее число.
  3. Переменная 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

Подборка ссылок по решению таких задач:

Множество разобранных примеров похожих задач можно найти тут и тут.

Видеоурок с разбором типовой задачи

Презентация с типовыми алгоритмами

система выбрала этот ответ лучшим
Роман4116 [911]
в решениях задач вы допускаете ошибки.
1. не 85 ответ а 58, наименьшее же. в первой задаче цикл выполняется пока х больше 0. так ведь?
 3 недели назад
Атенаис [16.7K]
Ну наименьшее/наибольшее правда напутала, время позднее, перепутала с условием второй задачи.
А во втором случае ошибки нет, просто опустила часть выкладок. Цикл действительно выполняется до тех пор, пока х больше 0 (не равен нулю), но как только после выполнения последней строки тела цикла значение х станет меньшим 100, условие в заголовке цикла станет ложным и произойдёт выход из цикла. То же самое касается условия окончания цикла в первой задаче.
 3 недели назад
комментировать
1

В решении используется элементарная математика и понимание кода программы. В разделе "Var" задаются все переменные, которые используются в коде задачи. Так "integer" - это целые числа, "real" - действительные числа. Конструкция "Begin....end." это "тело" программы. Оператор "Div" - целая часть от деления, "mod" - остаток от деления. Так в первой задачи мы сначала присваиваем а и b значение 0 и 10 соответственно. Потом если введенное значение Х>0 значение а увеличивается на целую часть деления X на 10. Если значение целой части меньше чем значение b, то значению b присваивается значение целой части. В конце цикла значению x присваивается значение остатка от деления Х на 10. После чего снова запускается цикл от сравнения X c нулём. Как только значение X станет меньше или равен нулю программа завершится и выведет полученные значение a и b. Чтобы значение b стало равно 5, необходимо, чтобы в последний заход цикла целая часть от деления была равна 5. Ну а чтобы а=13, необходимо, чтобы в первый прогон цикла целая часть была, такова, чтобы при последующем добавлении значения "5" получилось 13, то есть в первый раз целая часть равна 8. Таким образом, минимальное значение X=85.

Знаете ответ?
Есть интересный вопрос? Задайте его нашему сообществу, у нас наверняка найдется ответ!
Делитесь опытом и знаниями, зарабатывайте награды и репутацию, заводите новых интересных друзей!
Задавайте интересные вопросы, давайте качественные ответы и зарабатывайте деньги. Подробнее..
Быстрая регистрация
OpenID