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

