Форум » Циклы и ветвления » Задача 8 с сайта Полякова » Ответить

Задача 8 с сайта Полякова

Victor1010: Определите, что будет напечатано в результате работы следующего фрагмента программы: var k, s: integer; begin s:=0; k:=0; while s < 80 do begin s:=s+2*k; k:=k+4; end; write(s); end. Обычные 8-е номера я могу решать, но именно этот тип - нет То есть цикл прекратится при 80-0/2k И как это посчитать? Ну разве что в ручную, но я подозреваю, что есть более универсальный способ(теорию с архива я прочел, именно такой задачи не было)

Ответов - 3

Поляков: Victor1010 пишет: Ну разве что в ручную, но я подозреваю, что есть более универсальный способ Здесь можно и вручную - числа небольшие. Более "умно" - через сумму первых членов арифметической прогрессии. В данном случае начальное значение - 0, разность - 8. Посмотрите решение задачи Р-00 здесь.

Victor1010: Извините, но я все равно немного не понял Особенно, когда есть умножение Как нам понять, когда цикл перестанет выполняться? И почему разность 8, ведь потом она уже будет другая, там ведь умножение

oval: пусть k принимает значения k1,k2,...,kn тогда s = 0 + 2(k1+k2+...+kn)<80 или k1+k2+...+kn<40 ki-арифметическая последовательность с разностью 4 (2*0+(n-1)*4)*n/2<40 n(n-1)<20 n<5 => при n=4 условие выполняется, заходим в цикл пятый раз, находим s = 0+(2*0+(5-1)*4)*5/2 = 80, увеличиваем k выводим 80 P.S. s-сумма арифметической прогрессии с разностью 4*2 :)))




полная версия страницы