Автор | Сообщение |
|
Отправлено: 25.01.17 14:46. Заголовок: Задача 8 с сайта Полякова
Определите, что будет напечатано в результате работы следующего фрагмента программы: 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
[только новые]
|
|
|
| Администратор
|
Сообщение: 1251
|
|
Отправлено: 25.01.17 15:26. Заголовок: Victor1010 пишет: Ну..
Victor1010 пишет: цитата: | Ну разве что в ручную, но я подозреваю, что есть более универсальный способ |
|
Здесь можно и вручную - числа небольшие. Более "умно" - через сумму первых членов арифметической прогрессии. В данном случае начальное значение - 0, разность - 8. Посмотрите решение задачи Р-00 здесь.
|
|
|
|
Отправлено: 26.01.17 16:01. Заголовок: Извините, но я все р..
Извините, но я все равно немного не понял Особенно, когда есть умножение Как нам понять, когда цикл перестанет выполняться? И почему разность 8, ведь потом она уже будет другая, там ведь умножение
|
|
|
|
| постоянный участник
|
Сообщение: 322
|
|
Отправлено: 26.01.17 18:52. Заголовок: пусть k принимает зн..
пусть 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 :)))
|
|
|
|