Задания
Версия для печати и копирования в MS Word
Тип 16 № 40991
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)  =  5.

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

Ре­ше­ние.

При­ведём ре­ше­ние на языке 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) != 5:

i += 1

print(i)

 

Ответ: 242.

 

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

f = [1] * 999

f.insert(0, 0)

for n in range(1, 1000):

if n % 3 == 2:

f[n] = f[n - 1] + 1

else:

f[n] = f[(n - n % 3) // 3]

if f[n] == 5:

print(n)

break

 

При­ведём ре­ше­ние Ивана Глад­ких на языке Python.

def f(n):

if n == 0:

return 0

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

return f(n - 1) + 1

if n > 0 and n % 3 < 2:

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

for n in range(250):

if f(n) == 5:

print(n)

break

 

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

 

При­ведём ре­ше­ние на языке 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) = 5 then begin

writeln(i);

break

end;

end.


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