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

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

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

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



Сообщение: 50
ссылка на сообщение  Отправлено: 26.10.22 19:46. Заголовок: Тема 23 задача 5403


Моё решение
 
def f(x, k):
if x == 100 and k % 2 == 1:
return 1
if x > 100 or k > 50:
return 0
p1 = f(x + 2, k + 1)
p2 = f(x * 2, k + 1)
p3 = f(x ** 2, k + 1)
return p1 + p2 + p3

print(f(1, 0))

Выдает 29431 вместо 1025, причем если меняю условие в строке if x > 100 or k > 50: например на if x > 100 or k > 100: то ответ 80781
чего по идее не должно быть. Подскажите пожалуйста, что я делаю не так?

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







Сообщение: 60
ссылка на сообщение  Отправлено: 27.10.22 14:55. Заголовок: По условию можно бес..


По условию можно бесконечное число раз возводить единицу в квадрат

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



Сообщение: 51
ссылка на сообщение  Отправлено: 27.10.22 19:28. Заголовок: Спасибо!..


Спасибо!

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



Сообщение: 28
ссылка на сообщение  Отправлено: 29.10.22 15:24. Заголовок: Покажите, пожалуйста..


Покажите, пожалуйста, итоговую правильную программу

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



Сообщение: 29
ссылка на сообщение  Отправлено: 30.10.22 08:18. Заголовок: Если у вас получилос..


Если у вас получилось правильно решить данную задачу, то не могли бы вы показать верное решение?

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





Сообщение: 77
ссылка на сообщение  Отправлено: 12.12.22 08:22. Заголовок: Из первой 1 можно сд..


Из первой 1 можно сделать числа 3, 2 и 1.
Чтобы посчитать количество программ для первой 2 и 3, можно воспользоваться кодом
def f(st, fn, ln): 
if st > fn:
return 0
if st == fn and ln % 2 == 0:
return 1
return f(st + 2, fn, ln + 1) + f(st * 2, fn, ln + 1) + f(st ** 2, fn, ln + 1)


print(f(2, 100, 0) + f(3, 100, 0))


Но что мешает первые две команды сделать 3 3, т.е. возвести единицу дважды в квадрат и снова получится та же ситуация, еще столько же программ.
Более того, из первой единицы, полученной возведением в квадрат тоже есть программы, ведущие в 100 за нечетное количество команд.

Такое решение будет давать верный ответ, но оно неверное, потому что не учитывает возведение в квадрат 1
def f(st, fn, ln): 
if st > fn:
return 0
if st == fn and ln % 2 == 1:
return 1
if st != 1:
return f(st + 2, fn, ln + 1) + f(st * 2, fn, ln + 1) + f(st ** 2, fn, ln + 1)
else:
return f(st + 2, fn, ln + 1) + f(st * 2, fn, ln + 1)


print(f(1, 100, 0))


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





Сообщение: 48
ссылка на сообщение  Отправлено: 12.12.22 11:36. Заголовок: Замечание верное. До..


Замечание верное. Добавим в условие уточнение "команды, которые увеличивают число"
Решение:

def f(a,k=0): 
return a<100 and \
f(a+2,k+1)+f(a*2,k+1)+ (a>1 and f(a*a,k+1))\
or a==100 and k%2

print(f(1))


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

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