Вопрос задан 29.09.2023 в 07:33. Предмет Информатика. Спрашивает Яценко Танюшка.

Решите на пайтон Алгоритм вычисления значения функции 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) чётные.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Мин Зарико.

Программа:

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

0 0
Отвечает Пономаренко Макс.

Ответ:

(см. объяснение)

Объяснение:

В прикрепленных файлах приведено решение на 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)



0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи, мы можем написать функцию, которая будет вычислять значение F(n) согласно заданным условиям, а затем проверять, состоят ли все цифры этого значения в числе F(n) из отрезка [1; 800] в числах.

Вот как это можно сделать на Python:

python
def 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) чётные.

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос