Автор | Сообщение |
|
Отправлено: 18.03.17 09:30. Заголовок: Задача №439 (задание 21).
Непонятно, почему получается 13 в ответе к программе (Python). Определите, количество чисел k, для которых следующая программа выведет такой же результат, что и для k = 10? def f(n): return n * n * n k = int(input()) i = 1 while f(i) < k: i += 1 if f(i)-k <= k-f(i-1): print(i) else: print(i-1) Начинаем разбираться для k=10. Для начала, цикл while сработает последний раз для i=2, т.е. всего 2 раза. Т.к. n^3 < 10: 1^3 = 1 < 10; 2^3 = 8 < 10; 3^3 = 27 > 10. Итого потенциально у нас в k могут быть значения от 9 до 27 9 <= k <= 27 (1 ограничение). Проверяем условие. Преобразуем к виду i^3 + (i-1)^3 <= 2*k Первая итерация 8 + 1 = 9 <= 20 (да) печатаем 2 Вторая итерация 27 + 8 = 35 <= 20 (нет) печатаем 2 Получается, что 9 <= 2*k < 35, следовательно, 5 <= k (целое) <= 17 Итого, 5 <= k <= 17 (2 ограничение). Находим пересечение (т.к. должны соблюдаться оба ограничения, иначе либо будет другое количество итераций и выведется другое количество чисео, либо будут выведены другие числа) первого ограничения и второго (в целых числах). 9 <= k <= 17 Итого остаются значения 9, 10, 11, 12, 13, 14, 15, 16, 17 Ответ: 9 значений.
|
|
|
Ответов - 11
[только новые]
|
|
|
| Администратор
|
Сообщение: 1303
|
|
Отправлено: 18.03.17 14:39. Заголовок: zaport пишет: Для на..
zaport пишет: цитата: | Для начала, цикл while сработает последний раз для i=2, т.е. всего 2 раза. |
|
Верно. цитата: | Итого потенциально у нас в k могут быть значения от 9 до 27. |
|
Вы забыли, что в некоторых случаях на кран выводится i, а в некоторых - i-1. Поэтому нужно определить, что выводится при k=10 и проверить оба случая.
|
|
|
|
Отправлено: 18.03.17 15:39. Заголовок: Поляков пишет: Поэ..
Поляков пишет: цитата: | Поэтому нужно определить, что выводится при k=10 и проверить оба случая. |
| Константин Юрьевич, это еще не ответ. Дочитайте до конца, пожалуйста. Там все есть :-)
|
|
|
|
| Администратор
|
Сообщение: 1305
|
|
Отправлено: 18.03.17 16:00. Заголовок: zaport пишет: Конста..
zaport пишет: цитата: | Константин Юрьевич, это еще не ответ. Дочитайте до конца, пожалуйста. Там все есть :-) |
|
Я дочитал до конца, но плохо понимаю ваше объяснение. Но факт, что вы получаете неверный ответ. Проверьте ради интереса k = 5, там тоже будет 2 на выходе. Этого я вообще не понял.
|
|
|
|
Отправлено: 18.03.17 16:34. Заголовок: Поляков пишет: Пров..
Поляков пишет: цитата: | Проверьте ради интереса k = 5, там тоже будет 2 на выходе. |
| В том-то и дело, что будет одна 2 на выходе. Мы же во вторую итерацию не заходим в таком случае. Когда при k = 10 на экран выводится две двойки.
|
|
|
|
| Администратор
|
Сообщение: 1306
|
|
Отправлено: 18.03.17 16:39. Заголовок: zaport пишет: В том-..
zaport пишет: цитата: | В том-то и дело, что будет одна 2 на выходе. Мы же во вторую итерацию не заходим в таком случае. Когда при k = 10 на экран выводится две двойки. |
|
Ах, вот оно что... :-) А набрать программу и проверить? Выводится одно число, потому что срабатывает либо if, либо else.
|
|
|
|
Отправлено: 18.03.17 16:41. Заголовок: Поляков пишет: А на..
Поляков пишет: цитата: | А набрать программу и проверить? |
| Так именно так и сделал :-) В каждой итерации срабатывает if-else. При k = 10 две итерации и на выходе 2 числа, при k = 5 одна итерация и одно число.
|
|
|
|
| Администратор
|
Сообщение: 1307
|
|
Отправлено: 18.03.17 16:42. Заголовок: zaport пишет: В кажд..
zaport пишет: цитата: | В каждой итерации срабатывает if-else. |
|
Понял. Hint: if не в цикле. Уберите отступ.
|
|
|
|
Отправлено: 18.03.17 16:43. Заголовок: Все, понял ошибку. Н..
Все, понял ошибку. Неправильно расставил операторные скобки :-) Спасибо за терпение :-)
|
|
|
|
Отправлено: 18.03.17 16:43. Заголовок: Но все же с if в цик..
Но все же с if в цикле задача становится интереснее :-)
|
|
|
|
| Администратор
|
Сообщение: 1308
|
|
Отправлено: 18.03.17 16:53. Заголовок: zaport пишет: Но все..
zaport пишет: цитата: | Но все же с if в цикле задача становится интереснее :-) |
|
Да. Кстати, полезно, что вы ее порешали. Думаю, что понимания прибавилось. :-)
|
|
|
|
Отправлено: 18.03.17 16:55. Заголовок: Внимательности скоре..
Внимательности скорее) А-то детям объясняю, а сам не вижу очевидного :-)
|
|
|
|