Ниже записана программа. Получив ** вход число , эта программа печатает два числа, a и b....

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

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


Информатика (241 баллов) | 91 просмотров
0

800

0

мне решение нужно (

Дано ответов: 2
0 голосов
Правильный ответ

На каждой итерации цикла 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.

(3.7k баллов)
0 голосов

Заметим, что a - это счетчик, считающий кол-во выполнений цикла.
Т.к по условию программа выводит сначала 2, то цикл выполняется 2 раза.
В переменной b с конца отрезаются два остатка, а их сумма суммируется.
x div 100 отрезает сотни, делаем вывод о том, что число трехзначное.
Ответ: 800

(4.9k баллов)