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

pavlon4kp0bmeh pavlon4kp0bmeh    2   05.08.2021 12:03    2

Ответы
vikafemur vikafemur  04.09.2021 12:51

Программа:

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

ПОКАЗАТЬ ОТВЕТЫ
anastasiamartyn anastasiamartyn  04.09.2021 12:51

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

Объяснение:

В прикрепленных файлах приведено решение на 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), где n – натуральное число, задан следующ
Решите на пайтон Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующ
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика