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

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

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

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





Сообщение: 2
ссылка на сообщение  Отправлено: 10.02.24 18:54. Заголовок: № 312 (задание 23) - не сходится


Не сходится ответ
Мое решение:
 
def f(a,b,k,t):
if (a>(b+2)) or (k==2) or ((a%10)==5):
return 0
if a == b:
if 37 in t:
return 1
else:
return 0
if a!=b:
return f(a-1,b,k+1,t+[a])+f(a-2,b,k+1,t+[a])+f(a+5,b,0,t+[a])+f(a*2,b,0,t+[a])
print(f(7,50,0,[]))



Предложенное решение на сайте:
 
from functools import cache

@cache
def f( start, end, lastCmd = 0, hit37 = False ):
if start > end+2 or start == [15, 25, 35, 45]: return 0
if start == end: return hit37
if start == 37: hit37 = True
total = 0 if lastCmd == 1 else \
f( start-1, end, 1, hit37 ) + f( start-2, end, 1, hit37 )
return total + \
f( start+5, end, 3, hit37 ) + f( start*2, end, 3, hit37 )

count = f(7, 50)
print( count )



Объективно содержит 2 ошибки в строке if start > end+2 or start == [15, 25, 35, 45]: return 0
1) Список [15, 25, 35, 45] не учитывает все варианты значения переменной start. По заданию не должно быть кратно 5, список должен быть таким: [5, 15, 25, 35, 45]
2) Переменная start не должна принимать какое-либо значение из списка выше. С чего бы ее сравнивают со списком? Тут же нужно in использовать, не?

Если внести изменеия и прописать if start > end+2 or start in [5,15, 25, 35, 45]: return 0
Ответ этой программы будет 8538, что совпадает с ответом моей программы.

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


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

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