Ниже записана программа. Получив на вход число , эта программа печатает два числа, и . Укажите наибольшее из таких чисел , при вводе которых алгоритм печатает сначала 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.

Ответы

Ответ дал: restIess
1

Чтобы решить задачу нам нужно пробежаться глазами по коду.

Мы имеем какие-то две переменные, который изначально равны 0 и 1.

Дальше видим цикл while, который выполняется, пока x > 0, скорее всего, здесь что-то делается с цифрами числа.

Посмотрим че там в цикле творится. Видим, что при каждом проходе одна переменная увеличивается на 1, а другая умножается на x mod 10, с помощью x mod 10 у нас "откусывается" последняя цифра, ну к примеру 12 mod 10 = 2, то есть, таким образом мы ищем произведение цифр в числе. Ну и в конце цикла мы используем целочисленное деление, чтобы избавиться от крайней правой цифры.

Мы поняли, что наш цикл считает количество цифр и их произведение, остается подобрать нужные нам данные.

a - количество цифр

b - произведение

Нам нужно максимальное число с двумя разрядами, которое в произведение даст 14.

Вариантов то у нас мало, эт либо 27, либо 72, нам нужно наибольшее => выбираем 72

Ответ: 72

Вас заинтересует