Тип Д6 № 3250 
Анализ программ. Арифметическая прогрессия
i
Определите, что будет напечатано в результате работы следующего фрагмента программы:
| Бейсик | Python |
|---|
DIM K, S AS INTEGER S = 0 K = 0 WHILE S < 100 S = S + K K = K + 4 WEND PRINT K | s = 0 k = 0 while s < 100: s += k k += 4 print(k) |
| Паскаль | Алгоритмический язык |
|---|
var k, s: integer; begin s:=0; k:=0; while s < 100 do begin s:=s+k; k:=k+4; end; write(k); end. | алг нач цел k, s s := 0 k := 0 нц пока s < 100 s := s + k k := k + 4 кц вывод k кон |
| Си++ |
|---|
#include <iostream> using namespace std; int main() { int s, k; s = 0, k = 0; while (s < 100) { s = s + k; k = k + 4; } cout << k << endl; return 0; } |
Решение. Цикл while выполняется до тех пор, пока истинно условие s < 100, т. е. переменная s определяет, сколько раз выполнится цикл.
Значение s есть сумма первых n членов арифметической прогрессии.
b — сумма первых n членов прогрессии, d — разность прогрессии, n — количество членов.
Цикл прервется, когда
Найдем n:
(т. к. k:=k+4). Чтобы решить это неравенство, нам необходимо решить квадратное уравнение:
Среди его корней нас интересуют только положительные, следовательно, 
Воспользовавшись методом интервалов, находим, что первое натуральное n, при котором нарушается условие, есть 
Учитывая порядок операций в цикле, выясняем, что, до того как прерваться, цикл выполнится еще раз, следовательно, 
Подставив известные параметры в
получаем, что 
Ответ: 32