Задание 1. Тип заданий 20: программирование, циклы.
  • Задание:

    Ниже на языке Pascal записан алгоритм. При каком наибольшем n программа выведет на экран сначала 3, а потом 2?

    Pascal:
    var n, a, b, c: integer;
    begin
      readln(n);
      a := 0; b := 0;
      while n > 0 do begin
        a := a+1;
        c := n mod 10;
        b := b+c;
        n := n div 10;
      end;
      writeln(a); write(b);
    end.
  • Решение:

    Рассмотрим алгоритм.

    Сначала программа выводит значение a, после чего выводит значение b. Таким образом после выполнения программы a=3, b=2.

    Определим, что такое a и b.

    Как мы видим, каждый повтор цикла значение переменной a увеличивается на 1, таким образом можно сказать, что цикл совершил три повтора.

    При этом каждый повтор значение переменной n делится на 10 (n := n div 10;), то есть уменьшается на один разряд, и цикл завершится, когда переменная n станет равна нулю.

    Из этого можно сделать вывод: переменная a — это количество разрядов в числе n, и так как после выполнения программы a=3, то число n — трёхзначное.

    Теперь разберемся с переменной b. Каждый повтор цикла к b прибавляется значение переменной c, а переменная c — ни что иное, как последний разряд числа n (n mod 10). И каждый повтор цикла от n отнимается последний разряд, то есть переменная b — сумма разрядов числа n.

    То есть n — трёхзначное число, сумма разрядов которых равна двум. Мы должны найти наибольшее n, очевидно, что это 200 (число трёхзначное, 2+0+0=2).

    Ответ: 200

Поделиться:
 
Комментарии (4)
Светлана Ященко # 18 января 2016 в 17:24 +2
Почему ответ не 200?
Информатик БУ # 18 января 2016 в 17:46 0
Сам не понимаю shock
Иван Иванов # 27 марта 2016 в 14:04 0
stuk
Дмитрий Турышев # 24 ноября 2016 в 16:59 0
rofl
Перевести число из в Результат: 510 = 1012