Предмет: Информатика, автор: Unicorn074

напишите программу через паскаль или еще лучше через excel, пожалуйста

Приложения:

Ziorar: Вот программа (взял за основу и переделал программу из ответа товарища nkondratova001, который явно скопировал её из подобной задачи с немного другими условиями)

var
n, k: integer;

function F(n: integer): integer;
begin
if n = 0
then F := 8
else if (n > 0) and (n mod 3 = 0)
then F := 5 + F(n div 3)
else F := F(n div 3)
end;

begin
k := 0;
for n := 1 to 100000000 do
if F(n) = 18
then k := k + 1;
write(k)
end.

Ответ даёт такой (считает 30 с чем то секунд): 5201982

Ответы

Автор ответа: nkondratova001
0

Ответ:

Если решать задачу в лоб, то можно написать программу, скажем на паскале, которая у меня выполнялась 10 минут.

##

function F(n: integer): integer;

begin

if (n = 0)

then F:= 0

else if (n mod 2 > 0)

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

else F:= F(n div 2)

end;

var k:= 0;

var n:= 1;

loop 1000000000 do

begin

if (F(n) = 2)

then k += 1;

inc(n);

end;

print(k);

Результат ее работы: 435.

Если при решении задачи можно использовать компьютер, то тогда просто пишете этот код за 5 секунд и идете решать другие номера, для которых компьютер не требуется. Далее минут через 10-15 получаете ответ.

Но это топорный алгоритм и при решении задачи в реальной жизни такой подход применять строго противопоказано.

Более того, настоятельно рекомендовано Вам попробовать самостоятельно увидеть изюминку этого номера.


Unicorn074: не работает программка(
Похожие вопросы
Предмет: Математика, автор: Kira23111