Форум » Циклы и ветвления » 21 №443 (по генератору) » Ответить

21 №443 (по генератору)

Fivel: Определите, количество чисел k, для которых следующая программа выведет такой же результат, что и для k = 13? var k, i : longint; function f(n: longint): longint; begin f:= n*n*n - 5*n; end; begin readln(k); i := 1; while f(i) < k do i := i + 1; if 2*f(i)-k <= k-f(i-1) then writeln(i) else writeln(i-1); end. Программа выдает i=3. Рассуждаю: i=3 может быть напечатано, когда условие 2*f(i)-k <= k-f(i-1) истинно. Нахожу, что это при k>=11 i=4, если условие 2*f(i)-k <= k-f(i-1) ложно, то напечатается 3. Решаю условие 2*f(i)-k > k-f(i-1) . Получаю k<50 PПолучаю границы от 11 до 49 включительно. Получаю 38. В ответе 34. Подскажите, где неправильно? Или там совсем не такая логика рассуждений?

Ответов - 1

Поляков: Fivel пишет: Подскажите, где неправильно? Или там совсем не такая логика рассуждений? Вы забыли проверить условие окончания цикла: f(i) >= k. Поэтому для верхней границы получено завышенное значение.



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