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