Предмет: Информатика,
автор: 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.
Ответы
Автор ответа:
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
Похожие вопросы
Предмет: Окружающий мир,
автор: AnetAlex
Предмет: Алгебра,
автор: Аноним
Предмет: География,
автор: crowerey2
Предмет: Алгебра,
автор: erohinasofia
Предмет: Математика,
автор: alina04080