Предмет: Информатика, автор: 11111286

Пожалуйста, объяните подробно. Ниже записана программа. Получив на вход число x , эта программа печатает два числа, L и M. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 3, а потом 7.

var x, L, M: integer;

begin

    readln(x);

    L:=0; M:=0;

    while x > 0 do begin

        L:= L + 1;

        if x mod 2 = 0 then

            M:= M + (x mod 10) div 2;

        x:= x div 10;

    end;

    writeln(L); write(M);

end.

Ответы

Автор ответа: DanielMor
1
В условиях задачи сказано, что сначало выведется L=3, а затем M=7. По программе видно, что для того, чтобы L равнялось 3 необходимо 3 итерации цикла while. По строке "x:= x div 10;" видно, что число x должно быть трёхзначным для того, чтобы L = 3. С этим разобрались. Теперь к числу M. Оно зависит только от этой строчки "M:= M + (x mod 10) div 2;". Это означает, что возьмётся часть слева и поделится на 2, а затем прибавится к M. И только при условии, что цифра числа, на которой остановился цикл while, чётная. Методом подбора можно найти такое максимально возможное трёхзначное число. Это 149.

11111286: вообще-то ответ: 986
Похожие вопросы
Предмет: Алгебра, автор: Аноним