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

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

 F левая круг­лая скоб­ка n пра­вая круг­лая скоб­ка = n при  n мень­ше или равно 7;

 F левая круг­лая скоб­ка n пра­вая круг­лая скоб­ка = G левая круг­лая скоб­ка n минус 3 пра­вая круг­лая скоб­ка \times 3, если  n боль­ше 7.

 G левая круг­лая скоб­ка n пра­вая круг­лая скоб­ка = n при  n мень­ше или равно 7;

 G левая круг­лая скоб­ка n пра­вая круг­лая скоб­ка = G левая круг­лая скоб­ка n минус 1 пра­вая круг­лая скоб­ка плюс 4, если  n боль­ше 7.

Чему равно зна­че­ние вы­ра­же­ния  F левая круг­лая скоб­ка 43 000 пра­вая круг­лая скоб­ка ?

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

Ре­ше­ние.

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

Ана­ли­ти­че­ское ре­ше­ние.

При n=10 G(10)=19, F(10)=G(7)*3, G(7)=7.

Раз­ность G(10)-G(7)=19-7=12.

На­при­мер, F(20)=G(17) · 3, F(20)=141, т.е. n-7=13, 13 · 4=52. 52+7=59, 59-12=47, 47 · 3=141.

Т.о., при n>=10 G(n)-G(n-3)=12.

Сле­до­ва­тель­но, F(43000)=((43000-7) · 4+7-12)*3=515901.

 

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

from functools import *

 

@lru_cache()

def f(n):

if n <= 7:

return n

else:

return g(n - 3) * 3

 

@lru_cache()

def g(n):

if n <= 7:

return n

else:

return g(n - 1) + 4

 

for n in range(43000 + 1):

g(n)

f(n)

 

print(f(43000))

 

Ответ: 515 901.

 

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

f=[0]*100000

g=[0]*100000

for n in range (1,len(g)):

if n<=7:

g[n]= n

else:

g[n]=g[n-1]+4

for n in range (1,len(f)):

if n<=7:

f[n]= n

else:

f[n]= g[n-3]*3

print(f[43000])

 

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

g={}

for n in range(43000): g[n] = n if n<= 7 else g[n-1]+4

print(g[43000-3]*3)