Ниже записана программа. Получив на вход число , эта программа печатает два числа, и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 2, а потом 14.
var x, a, b : integer;
begin
readln(x);
a := 0; b := 1;
while x > 0 do begin
a := a + 1;
b := b * (x mod 10);
x := x div 10;
end;
writeln(a); write(b);
end.
Ответы
Чтобы решить задачу нам нужно пробежаться глазами по коду.
Мы имеем какие-то две переменные, который изначально равны 0 и 1.
Дальше видим цикл while, который выполняется, пока x > 0, скорее всего, здесь что-то делается с цифрами числа.
Посмотрим че там в цикле творится. Видим, что при каждом проходе одна переменная увеличивается на 1, а другая умножается на x mod 10, с помощью x mod 10 у нас "откусывается" последняя цифра, ну к примеру 12 mod 10 = 2, то есть, таким образом мы ищем произведение цифр в числе. Ну и в конце цикла мы используем целочисленное деление, чтобы избавиться от крайней правой цифры.
Мы поняли, что наш цикл считает количество цифр и их произведение, остается подобрать нужные нам данные.
a - количество цифр
b - произведение
Нам нужно максимальное число с двумя разрядами, которое в произведение даст 14.
Вариантов то у нас мало, эт либо 27, либо 72, нам нужно наибольшее => выбираем 72
Ответ: 72