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

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

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

    Для решения задания такого типа нужно разобраться в том, как работает алгоритм.

    Программа сначала выводит значение переменной a, а затем — значение переменной b. Мы должны определить, что такое a, и что такое b для исходного числа.

    Изначально переменные a и b равны нулю. Рассмотрим цикл.

      while n > 0 do begin
        a := a+1;
        c := n mod 10;
        b := b+c;
        n := n div 10;
      end;

    Цикл выполняется, пока n больше нуля, и каждый повтор цикла происходит операция n := n div 10, то есть n уменьшается на один разряд. При этом каждый повтор цикла переменная a увеличивается на 1. Чтобы было более понятно, рассмотрим пример для n = 234:

    n = 234

    1 повтор цикла: n>0, a=1, n=23

    2 повтор цикла: n>0, a=2, n=2

    3 повтор цикла: n>0, a=3, n=0

    4 повтор цикла выполнен не будет, так как условие n>0 перестало выполняться.

    Исходя из этого, мы можем сказать, что a — это количество разрядов в числе n, и так как по условию a должна быть равна 3, то число n — трехзначное.

    Теперь разберемся с переменной b. Каждый повтор цикла к b прибавляется переменная c, а переменная c — остаток от деления числа n на 10, то есть последний разряд числа n. Таким образом, мы можем сказать, что переменная b — сумма разрядов числа n.

    Выходит, нам нужно найти наименьшее трёхзначное число, сумма разрядов которого равна 7. Так как число трёхзначное, значит старшим разрядом числа должна быть как минимум 1. При этом, для получения наименьшего числа, значения старших разрядов должны быть наименьшим, а младших — наибольшим. Включим голову, и сообразим, что нам подходит число 106. 1+0+6=7.

    Ответ: 106

Поделиться:
 
Комментарии (0)

Нет комментариев. Ваш будет первым!

Перевести число из в Результат: 510 = 1012