Задание 3. Тип заданий 20: программирование, циклы.
  • Задание:

    Ниже на языке Pascal записан алгоритм. При каком наименьшем трёхзначном n программа выведет на экран сначала 5, а потом 1?

    Pascal:
    var n, a, b, c: integer;
    begin
      readln(n);
      a := 0; b := 10;
      while n > 0 do begin
        if n mod 10 > a then
          a := n mod 10;
        if n mod 10 < b then
          b := n mod 10;
        n := n div 10;
      end;
      writeln(a); write(b);
    end.
  • Решение:

    Разберёмся с алгоритмом.

    Каждый повтор цикла значение переменной n делится на 10. Разберем на примере трёхзначного числа ABC, где A, B и C — разряды числа:

    1-й повтор цикла. n := ABC div 10 = AB

    2-й повтор цикла. n := AB div 10 = A

    3-й повтор цикла. n := A div 10 = 0.

    Кроме того, в каждом повторе проверяется значение n mod 10, то есть младший разряд введённого числа. Для числа вида ABC:

    в первом повторе цикла ABC mod 10 = C;

    во втором повторе цикла AB mod 10 = B;

    в третьем повторе цикла A mod 10 = A.

    Таким образом, полное выполнение цикла проверяет каждый разряд числа.

    В цикле два условия:

    if n mod 10 > a then a := n mod 10; — находит наибольший разряд числа;

    if n mod 10 < b then b := n mod 10; — находит наименьший разряд числа.

    То есть значение переменной a — это наибольший разряд числа, а значение переменной b — наименьший.

    Получается, нам нужно подобрать наименьшее трёхзначное число, в котором минимальный разряд равен 1, а максимальный — 5.

    Если мы ищем наименьшее число, то старший разряд должен быть минимальным:

    1xx

    А младший разряд — максимальным:

    1x5

    Второй разряд, для получения наименьшего числа, должен быть как можно меньше. Так как минимальный разряд в числе — 1, то n=115.

    Ответ: 115

Поделиться:
 
Комментарии (1)
Алексей Алексеевич # 15 июня 2016 в 00:42 0
Т.е. после того, как выполнилось это действие
if n mod 10 > a then
a := n mod 10;
мы переходим на
n := n div 10; ? спасибо
Перевести число из в Результат: 510 = 1012