Задания
Версия для печати и копирования в MS Word
Тип 16 № 40732
i

Обо­зна­чим оста­ток от де­ле­ния на­ту­раль­но­го числа a на на­ту­раль­ное число b как a mod b.

Ал­го­ритм вы­чис­ле­ния зна­че­ния функ­ции F(n), где n  — целое не­от­ри­ца­тель­ное число, задан сле­ду­ю­щи­ми со­от­но­ше­ни­я­ми:

F(0)  =  0;

F(n)  =  F(n − 1) + 1, если n > 0 и при этом n mod 3  =  2;

F(n)  =  F((nn mod 3) / 3), если n > 0 и при этом n mod 3 < 2.

 

Ука­жи­те наи­мень­шее воз­мож­ное n, для ко­то­ро­го F(n)  =  6.

Спрятать решение

Ре­ше­ние.

При­ведём про­грам­му на PascalABC, ре­ша­ю­щую дан­ную за­да­чу:

var n: longint;

i: integer;

function F(n: longint): longint;

begin

if n = 0

then F := 0

else if (((n mod 3) = 2) and (n > 0))

then F := F(n - 1) + 1

else if (((n mod 3) < 2) and (n > 0))

then F := F((n - n mod 3) div 3);

end;

begin

for i := 1 to 1000 do

if F(i) = 6 then begin

writeln(i);

break

end;

end.

 

Ре­зуль­тат ра­бо­ты про­грам­мы  — 728.

 

Ответ: 728.

 

При­ведём дру­гое ре­ше­ние на языке Python.

def F(n):

if n == 0:

return 0

if n % 3 == 2 and n > 0:

return F(n - 1) + 1

if n % 3 < 2:

return F((n - n % 3) / 3)

i = 0

while F(i) != 6:

i += 1

print(i)


Аналоги к заданию № 40732: 40991 Все