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

imranio imranio    1   02.09.2019 03:10    0

Ответы
leafkKuro leafkKuro  06.10.2020 10:59
Заметим, что a - это счетчик, считающий кол-во выполнений цикла.
Т.к по условию программа выводит сначала 2, то цикл выполняется 2 раза.
В переменной b с конца отрезаются два остатка, а их сумма суммируется.
x div 100 отрезает сотни, делаем вывод о том, что число трехзначное.
ответ: 800
ПОКАЗАТЬ ОТВЕТЫ
BEKISKAKOV75 BEKISKAKOV75  06.10.2020 10:59
На каждой итерации цикла 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=1000 b=b+(10 mod 100)=b+10=10 мы получим значение большее 8. Значит нам подходят только трехзначные числа. Чтобы число было максимальным ставим 8 в сотни:800.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика