Форум » Рекурсивные процедуры и функции » Задача 34 » Ответить

Задача 34

яна: 34) (Д.Ф. Муфаззалов) Определите наименьшее число n такое, что при вызове F(n) второе выведенное число будет больше числа 51. Запишите в ответе сначала найденное значение n, а затем через пробел – соответствующее значение F(n). При этом ответ 520 7. То есть второе выведенное число явно меньше 51.

Ответов - 5

Поляков: яна пишет: То есть второе выведенное число явно меньше 51. Второе выведенное число - 52.

imdemeneva: В стриме #16 Информатик БУ разбирает это задание на Паскале, ответ другой (799999 52). У меня такой же ответ на Питоне. Хотелось бы познакомиться с авторским решением. Или с вашим, Константин Юрьевич.

Поляков: imdemeneva пишет: Хотелось бы познакомиться с авторским решением. Или с вашим, Константин Юрьевич. [pre2] def F(n): #print(n) out.append( n ) if n>0: d=n%10+F(n//10) #print(d) out.append( d ) return d else: return 0 n = 1 while True: out = [] res = F(n) if out[1] > 51: print( n, res ) break n += 1 [/pre2]


cabanov.alexey: разбирает это задание на Паскале, ответ другой (799999 52) Очевидно ошибка в том, что Владимир под 52 подгонял итоговый результат, а не второе выведенное число. Второе выведенное число - это первое число без последней цифры. Минимальное число вида 52* - 520. Рекурсия вообще считает сумму цифр, поэтому f(520) = 7

imdemeneva: Благодарю, коллеги!



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