Если решать задачу в лоб, то можно написать программу, скажем на паскале, которая у меня выполнялась 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 получаете ответ.
Но это топорный алгоритм и при решении задачи в реальной жизни такой подход применять строго противопоказано.
Более того, настоятельно рекомендовано Вам попробовать самостоятельно увидеть изюминку этого номера.
Answers & Comments
Ответ:
Если решать задачу в лоб, то можно написать программу, скажем на паскале, которая у меня выполнялась 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 получаете ответ.
Но это топорный алгоритм и при решении задачи в реальной жизни такой подход применять строго противопоказано.
Более того, настоятельно рекомендовано Вам попробовать самостоятельно увидеть изюминку этого номера.