DVBogdanov.ru / Тренировочный вариант по информатике, задание 8

Задание №1701/08

Задание

Запишите число, которое будет напечатано в результате выполнения следующей программы.

  • Копировать
    var
      a, b, c : integer;
    begin
      a := 0; b := 0; c := 0;
      while 2 * a < 200 do begin
        b := b + 3;
        c := c - 1;
        a := a + b + c
      end;
      write(a - 10)
    end.
    
  • Копировать
    #include <stdio.h>
    
    void main() {
      int a = 0, b = 0, c = 0;
      while (2 * a < 200) {
        b += 3;
        c--;
        a += b + c;
      }
      printf("%d", a - 10);
    }
    
  • Копировать
    DIM A, B, C AS INTEGER
    A = 0 : B = 0 : C = 0
    WHILE 2 * A < 200
      B = B + 3
      C = C - 1
      A = A + B + C
    WEND
    PRINT A - 10
    
  • Копировать
    a = b = c = 0
    while 2 * a < 200 :
      b += 3
      c -= 1
      a += b + c
    print(a - 10)
    

Решение

Упростим условие цикла, поделив на \(2\) обе части неравенства \(2a < 200\), тогда оно примет вид \(a < 100\).

На первой итерации имеем \(b_1 = 0 + 3 = 3\), \(c_1 = 0 - 1 = -1\) и \(a_1 = 0 + 3 + (-1) = 2\). Далее, на каждой итерации с номером \(n > 1\), к предыдущему значению \(a_{n-1}\) будет прибавляться сумма \(b_n+c_n = 3n - n = 2n\), откуда \[a_n = \left(3 + (-1)\right) + (6 + (-2)) + (9 + (-3)) + \ldots + (b_n + c_n) = 2 + 4 + 6 + \ldots\ + 2n.\]

Сумма первых \(n\) членов полученной арифметической прогрессии определяется по формуле \[ a_n = 2 + 4 + 6 + \ldots\ + 2n = 2\cdot\left(1 + 2 + 3 + \ldots\ + n\right) = 2\cdot\frac{n\cdot(n+1)}{2} = n\cdot(n+1). \]

Учитывая условие \(a_n = n\cdot(n+1) < 100\), определим \( n_\min = 10\), при котором это неравенство не выполняется. Таким образом, цикл завершится при \(a=10\cdot(10+1)=110\).

Заметим, что в ответе выводится \(a-10=110-10=100\).

Подробнее...

Ответ

100

Подробнее...
Добавить комментарий
Комментарии (0)
#Задачи на программирование #Подготовка к ЕГЭ по информатике #Циклический оператор