Вариант № EGE_INF_1701
Добавлен 18 мая 2017 г. в 0:11. Изменён 24 декабря 2017 г. в 22:53.Скачать PDFЗадание
Запишите число, которое будет напечатано в результате выполнения следующей программы.
-
Копировать
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
Подробнее...