На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Не зарегистрирован
ссылка на сообщение  Отправлено: 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 значений.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 11 [только новые]


Администратор




Сообщение: 1303
ссылка на сообщение  Отправлено: 18.03.17 14:39. Заголовок: zaport пишет: Для на..


zaport пишет:
 цитата:
Для начала, цикл while сработает последний раз для i=2, т.е. всего 2 раза.

Верно.
 цитата:
Итого потенциально у нас в k могут быть значения от 9 до 27.

Вы забыли, что в некоторых случаях на кран выводится i, а в некоторых - i-1. Поэтому нужно определить, что выводится при k=10 и проверить оба случая.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 1
ссылка на сообщение  Отправлено: 18.03.17 15:39. Заголовок: Поляков пишет: Поэ..


Поляков пишет:

 цитата:
Поэтому нужно определить, что выводится при k=10 и проверить оба случая.



Константин Юрьевич, это еще не ответ. Дочитайте до конца, пожалуйста. Там все есть :-)

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 1305
ссылка на сообщение  Отправлено: 18.03.17 16:00. Заголовок: zaport пишет: Конста..


zaport пишет:
 цитата:
Константин Юрьевич, это еще не ответ. Дочитайте до конца, пожалуйста. Там все есть :-)

Я дочитал до конца, но плохо понимаю ваше объяснение. Но факт, что вы получаете неверный ответ. Проверьте ради интереса k = 5, там тоже будет 2 на выходе.
 цитата:
Находим пересечение

Этого я вообще не понял.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 2
ссылка на сообщение  Отправлено: 18.03.17 16:34. Заголовок: Поляков пишет: Пров..


Поляков пишет:

 цитата:
Проверьте ради интереса k = 5, там тоже будет 2 на выходе.


В том-то и дело, что будет одна 2 на выходе. Мы же во вторую итерацию не заходим в таком случае.
Когда при k = 10 на экран выводится две двойки.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 1306
ссылка на сообщение  Отправлено: 18.03.17 16:39. Заголовок: zaport пишет: В том-..


zaport пишет:
 цитата:
В том-то и дело, что будет одна 2 на выходе. Мы же во вторую итерацию не заходим в таком случае. Когда при k = 10 на экран выводится две двойки.

Ах, вот оно что... :-) А набрать программу и проверить? Выводится одно число, потому что срабатывает либо if, либо else.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 3
ссылка на сообщение  Отправлено: 18.03.17 16:41. Заголовок: Поляков пишет: А на..


Поляков пишет:

 цитата:
А набрать программу и проверить?


Так именно так и сделал :-)

В каждой итерации срабатывает if-else.
При k = 10 две итерации и на выходе 2 числа, при k = 5 одна итерация и одно число.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 1307
ссылка на сообщение  Отправлено: 18.03.17 16:42. Заголовок: zaport пишет: В кажд..


zaport пишет:
 цитата:
В каждой итерации срабатывает if-else.

Понял. Hint: if не в цикле. Уберите отступ.

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 4
ссылка на сообщение  Отправлено: 18.03.17 16:43. Заголовок: Все, понял ошибку. Н..


Все, понял ошибку. Неправильно расставил операторные скобки :-) Спасибо за терпение :-)

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 5
ссылка на сообщение  Отправлено: 18.03.17 16:43. Заголовок: Но все же с if в цик..


Но все же с if в цикле задача становится интереснее :-)

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Сообщение: 1308
ссылка на сообщение  Отправлено: 18.03.17 16:53. Заголовок: zaport пишет: Но все..


zaport пишет:
 цитата:
Но все же с if в цикле задача становится интереснее :-)

Да. Кстати, полезно, что вы ее порешали. Думаю, что понимания прибавилось. :-)

___________________________________________________
Имей мужество пользоваться собственным умом. (И. Кант)
Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 6
ссылка на сообщение  Отправлено: 18.03.17 16:55. Заголовок: Внимательности скоре..


Внимательности скорее) А-то детям объясняю, а сам не вижу очевидного :-)

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1499
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет