Помогите с информатикой
Нужен простой кода на питоне.
Алгоритм вычисления функции F(n), где n – натуральное число, задан следующими соотношениями:
F(n) = n + F(n / 5 + 1), когда n > 5 и делится на 5,
F(n) = n + F(n + 6) , когда n > 5 и не делится на 5.
Назовите минимальное значение n, для которого F(n) > 1000.
def f (n):
if n<=5:
return n
if n%5==0:
return n+f(n//5+1)
if n%6!=0:
return n+f(n+6)
return 0
for n in range(1, 100000):
r = f(n)
if r >1000:
print(n, r)
Назовите минимальное значение n для которого f n определено и больше 1000
Ответ для 10_000_000 (в Python можно прямо писать числа с подчёркиваниями) хоть для 2, хоть для 3 будет получен менее чем за минуту.
Во-вторых, с миллиардом что Python, что C++ будут возиться не меньше нескольких минут. Решение «в лоб» с циклом неоптимально даже без вызовов рекурсивной функции, а для кэширования не хватит памяти. Надо придумывать что-то принципиально другое.
Посмотрите на двоичную запись нужных чисел:
С учётом особенностей числа 1_000_000_000 задачу можно решить так:
- Страница 1 из 1
- 1

© 2007 — 2022 Сообщество учителей-предметников «Учительский портал»
Свидетельство о регистрации СМИ: Эл № ФС77-64383 выдано 31.12.2015 г. Роскомнадзором.
Территория распространения: Российская Федерация, зарубежные страны.
Учредитель / главный редактор: Никитенко Е.И.
Сайт является информационным посредником и предоставляет возможность пользователям размещать свои материалы на его страницах.
Публикуя материалы на сайте, пользователи берут на себя всю ответственность за содержание материалов и разрешение любых спорных вопросов с третьими лицами.
При этом администрация сайта готова оказать всяческую поддержку в решении любых вопросов, связанных с работой и содержанием сайта.
Если вы обнаружили, что на сайте незаконно используются материалы, сообщите администратору через форму обратной связи — материалы будут удалены.
Все материалы, размещенные на сайте, созданы пользователями сайта и представлены исключительно в ознакомительных целях. Использование материалов сайта возможно только с разрешения администрации портала.
Фотографии предоставлены 
Назовите минимальное значение n для которого f n определено и больше 1000
Программа:
elif n > 18 and n % 3 == 0:
return (n // 3) * F(n // 3) + n — 12
return F(n — 1) + n * n + 5
for i in range(1, 801):
m = 0 # Обнуляем переменную проверки длины четных цифр в числе
for j in range(len(str(F(i)))): # Пробежимся по длине числа (От 0 до len(‘число’))
if int(str(F(i))[j]) % 2 == 0: # Проверяем каждую цифру числа на чётность
if m == len(str(F(i))): # Если значение переменной совпадает с длиной числа, то..
Ответ: 16

Ответ:
Объяснение:
В прикрепленных файлах приведено решение на python и pascal.
Ответом будет число 16.
Задание выполнено!
function F(n: integer): integer;
begin
if(n<=18) then F:= n+3
else if((n>18) and (n mod 3 = 0)) then F:= (n div 3)*F(n div 3)+n-12
else if((n>18) and (n mod 3 >0)) then F:= F(n-1)+n*n+5;