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

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

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

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

    В программу вводится значение n, программа выводит значения a и b. Нужно определить, по какому принципу строятся эти числа.

    Изначально a = 0, каждый повтор цикла значение переменной a увеличивается на 1, таким образом можно сказать, что a — это количество повторов цикла.

    Цикл повторяется пока n > 0, при этом каждый повтор цикла выполняется операция n := n div 10. Давайте разберёмся, что делает эта операция.

    div — целочисленное деление, при выполнении, например, операции 58 div 10, результат будет равен 5, а при выполнении 123 div 10 результат будет равен 12. То есть операция n := n div 10 убирает последний разряд (цифру) из числа n. И так как эта операция находится в цикле, каждый повтор цикла от значения n будет отниматься один разряд, пока переменная n не станет равна нулю.

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

    По условию a=2, значит число n — двузначное.

     

    Теперь определим, что такое b. Изначально b = 1, и каждый повтор цикла происходит операция b := b * (n mod 10).

    n mod 10 — это последний разряд числа n. Проще говоря, результат операции 153 mod 10 равен 3, а результат 244 mod 10 равен 4.

    То есть каждый повтор цикла переменная b умножается на последний разряд числа n, при этом каждый повтор цикла от n отнимается один разряд. Для более понятного объяснения рассмотрим рассмотрим выполнение алгоритма на примере числа 153:

    1 повтор цикла: 153 mod 10 = 3, переменная b будет умножена на 3, из числа 153 убрали последний разряд;

    2 повтор цикла: 15 mod 10 = 5, переменная b будет умножена на 5, из числа 15 убрали последний разряд;

    3 повтор цикла: 1 mod 10 = 1, переменная b будет умножена на 1, из числа 1 убрали последний разряд.

    Цикл завершился.

    Таким образом, b — ни что иное, как произведение цифр числа n.

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

     

    Рассмотрим делители числа 12: 1*12, 2*6, 3*4. Первый вариант нам не подходит, так как 12 не может быть разрядом числа. Так как нам нужно наибольшее n, очевидно, что подойдёт вариант 2*6, и из него мы можем составить число 62.

    62 — двузначное число, произведение разрядов равно 12.

    Ответ: 62

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

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

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