
Решите на пайтон Алгоритм вычисления значения функции F(n), где n – натуральное число, задан
следующими соотношениями: F(n) = n + 3, при n ≤ 18 F(n) = (n//3)*F(n//3) + n - 12, при n > 18, кратных 3 F(n) = F(n-1) + n*n + 5, при n > 18, не кратных 3 Здесь // обозначает деление нацело. Определите количество натуральных значений n из отрезка [1; 800], для которых все цифры значения F(n) чётные.

Ответы на вопрос

Программа:
def F(n):
if n <= 18:
return n + 3
elif n > 18 and n % 3 == 0:
return (n // 3) * F(n // 3) + n - 12
else:
return F(n - 1) + n * n + 5
k = 0
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: # Проверяем каждую цифру числа на чётность
m += 1
if m == len(str(F(i))): # Если значение переменной совпадает с длиной числа, то..
k += 1
print(k)
Ответ: 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;
end;
var k: integer := 0;
for var i: integer := 1 to 800 do
begin
var t: integer := 1;
foreach var c: char in F(i).ToString do
if(Integer.Parse(c) mod 2 > 0) then
begin
t:= 0;
break;
end;
if(t=1) then k:= k+1;
end;
print(k);
def f(n):
if n <= 18:
return n + 3
elif n > 18 and n % 3 == 0:
return (n // 3) * f(n // 3) + n - 12
elif n > 18 and n % 3 > 0:
return f(n - 1) + n * n + 5
k = 0
for p in range(1, 801):
e = 1
for s in str(f(p)):
if int(s) % 2 > 0:
e = 0
break
if e == 1:
k += 1
print(k)





Для решения этой задачи, мы можем написать функцию, которая будет вычислять значение F(n) согласно заданным условиям, а затем проверять, состоят ли все цифры этого значения в числе F(n) из отрезка [1; 800] в числах.
Вот как это можно сделать на Python:
pythondef calculate_F(n):
if n <= 18:
return n + 3
elif n % 3 == 0:
return (n // 3) * calculate_F(n // 3) + n - 12
else:
return calculate_F(n - 1) + n * n + 5
def all_digits_even(number):
return all(int(digit) % 2 == 0 for digit in str(number))
count = 0
for n in range(1, 801):
result = calculate_F(n)
if all_digits_even(result):
count += 1
print(count)
Этот код вначале определяет функцию calculate_F(n)
, которая рекурсивно вычисляет значение F(n) в соответствии с заданными условиями. Затем, с помощью цикла, он перебирает все значения n от 1 до 800 и проверяет, все ли цифры в числе F(n) чётные. Если это так, то увеличивается счётчик count
. В конце программа выводит количество натуральных значений n из отрезка [1; 800], для которых все цифры значения F(n) чётные.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili