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

Ответы 2

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

      smarty85
    • 5 лет назад
    • 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.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years