К содержимому

Циклы: анализ алгоритмов

Содержание номера · 4 из 6

Задача 1. Получив на вход число х, программа печатает два числа - а и b. Укажите наибольшее из таких чисел х, при вводе которых программа напечатает сначала число 3, а потом число 35.

var x, a, b: integer; 
  begin
  readln(x); 
  a:=0; 
  b:=l; 
  while x>0 do begin
    a := a+1;
    b := b*(x mod 10); 
    X := X div 10; 
  end;
  writeln(a); 
  write(b); 
end.

Решение

В данном случае трассировка бессмысленна, так как исходное данное неизвестно (его и нужно определить). Поэтому решение заключается в общем анализе алгоритма.

1. Программа должна первым напечатать значение 3. Поскольку первым стоит оператор вывода writeln(a), по завершении выполнения цикла переменная a должна быть равна 3. Изначально a = 0. Изменение этой переменной в цикле производится оператором a := a+1, т.е. значение a определяет количество проходов цикла.

2. Таким образом, цикл выполняется 3 раза. При этом второе печатаемое число (значение переменной b) равно 35.

Анализируем цикл целиком:

while x>0 do begin
    a := a+1;
    b := b*(x mod 10); 
    X := X div 10; 
  end;

Конструкция, включающая в себя сначала вычисление остатка от деления числа x на 10, а затем меняющая значение x на результат целочисленного деления x на 10, в цикле пока x > 0, является типовой и реализует последовательное выделение цифр числа x.

Таким образом, данный цикл выполняет поочередное (справа налево - от младших разрядов к старшим) выделение цифр числа x и вычисление в переменной b произведения этих цифр.

3. Итак, нам нужно найти наибольшее значение числа x, у которого произведение цифр равно 35, а количество цифр равно трем (так как цикл выделения каждой цифры выполнялся трижды).

Число 35 можно разложить на множители как 5 · 7, причем эти множители простые. Чтобы получить три множителя, можно добавить к ним единицу: 35 = 5 · 7 · 1.

Таким образом, для получения заданных результатов (чисел 3 и 35) нам годятся значения x, равные всем возможным комбинациям цифр 1, 5 и 7. Наибольшее же из таких чисел равно, очевидно, 751.

Статья обрывается здесь. Весь номер — 6 статей — 190 ₽ (≈ 32 ₽ за статью), остаётся у вас навсегда.

Войти, чтобы купить
  1. 5 Операции с массивами: анализ программ
  2. 6 Процедуры и функции

Первая статья открыта всем — читать «Введение»