Ниже записана программа. Получив на вход число , эта программа
печатает два числа, a и b. Укажите наибольшее из чисел , при вводе которых алгоритм печатает сначала 2, а потом 8.
var x, a, b: integer;
begin
readln(x);
a:=0; b:=0;
while x > 0 do begin
a:= a + 1;
b:= b + (x mod 100);
x:= x div 100;
end;
writeln(a); write(b);
end.
Answers & Comments
Verified answer
Заметим, что a - это счетчик, считающий кол-во выполнений цикла.Т.к по условию программа выводит сначала 2, то цикл выполняется 2 раза.
В переменной b с конца отрезаются два остатка, а их сумма суммируется.
x div 100 отрезает сотни, делаем вывод о том, что число трехзначное.
Ответ: 800
Verified answer
На каждой итерации цикла x div 100 убирает 2 цифры числа x с конца и к a прибавляется 1.Тогда если a = 2 значит x лежит в диапазоне от 100 до 9999.Например при x=100 на первой итерации a=a+1=1 ,x=x div 100=1, 1>0цикло продолжается a:=a+1=2; x:=x div 100=0.При x=9999 на первой итерации a=a+1=1 ,x=x div 100=99, 99>0цикло продолжается a:=a+1=2; x:=x div 100=0.
К переменной b прибавляется 2 последние цифры числа x.Если в числе x будет четыре цифры то после первой итерациив числе x останется 2 цифры.Это значит что даже при минимальном четырехзначном числе x=1000b=b+(10 mod 100)=b+10=10 мы получим значение большее 8.Значит нам подходят только трехзначные числа.Чтобы число было максимальным ставим 8 в сотни:800.