Форум » Рекурсивные процедуры и функции » 16 №66 » Ответить

16 №66

Гафарова Зиля: 66) Алгоритм вычисления функции F(n) задан следующими соотношениями: F(n) = n · n + 11, при n  15 F(n) = F(n // 2) + n · n · n – 5 · n, при чётных n > 15 F(n) = F(n–1) + 2 · n + 3, при нечётных n > 15 Здесь «//» обозначает деление нацело. Определите количество натуральных значений n из отрезка [1; 1000], для которых значения F(n) содержит не менее трёх цифр 6. function F(n:longint):longint; begin if n<=15 then F:=n*n+11 else if (n mod 2 = 0) and (n>15) then F:=F(n div 2)+n*n*n-5 else if (n mod 2 <> 0) and (n>15) then F:=F(n-1)+2*n+3; end; var i,x,a,k,t,k1:longint; begin k:=0; for i:=1 to 1000 do begin t:=0; x:=F(i); k1:=0; while x>0 do begin a:=x mod 10; if a=6 then k1:=k1+1; x:=x div 10; end; if k1>=3 then k:=k+1; end; writeln(k); end. Ответ:40 В ключе ответ 49

Ответов - 3

OlgaChe1: [pre] F := F(n div 2) + n * n * n - 5*n[/pre]

Гафарова Зиля: Спасибо.

Соболева: #66 def f(n): if n<=15: return n*n+11 if n>15 and n%2==0: return f(n//2)+n*n*n-5 if n>15 and n%2!=0: return f(n-1)+2*n+3 k=0 for n in range (1,1000+1): s=str(f(n)) if s.count('6')>= 3: k+=1 print (k) # у меня тоже ответ 40




полная версия страницы