Определите, что будет напечатано в результате работы следующего фрагмента программы:
Бейсик | 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 членов арифметической прогрессии. ,
— сумма первых n членов прогрессии,
— разность прогрессии,
— количество членов.
Цикл прервется, когда .
Найдем :
,
,
(т. к. k:=k+4). Чтобы решить это неравенство, нам необходимо решить квадратное уравнение:
. Среди его корней нас интересуют только положительные, следовательно,
Воспользовавшись методом интервалов, находим, что первое натуральное n, при котором нарушается условие, есть .
Учитывая порядок операций в цикле, выясняем, что, до того как прерваться, цикл выполнится еще раз, следовательно, .
Подставив известные параметры в , получаем, что