Пожалуйста, объяните подробно. Ниже записана программа. Получив ** вход число x , эта...

0 голосов
40 просмотров

Пожалуйста, объяните подробно. Ниже записана программа. Получив на вход число 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.


Информатика (24 баллов) | 40 просмотров
Дан 1 ответ
0 голосов

В условиях задачи сказано, что сначало выведется 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.

(1.1k баллов)
0

вообще-то ответ: 986