• Пожалуйста, помогите с решением...

    Определите, количество чисел K, для которых следующая программа выведет такой же результат, что и для K = 36:
    var i, k: integer;
    function F(x:integer):integer;
    begin
    if x < 2 then
    F:= 1
    else F:= F(x-1) + 2*F(x-2);
    end;
    begin
    i := 28;
    readln(K);
    while (i > 0) and (F(i) > K) do
    i:=i-1;
    writeln(i);
    end.

Ответы 1

  • Для начала смотрим что выходит при К= 36, выходит 5

    Анализируем функцию F. Это линейная функция наподобии Фибоначи, значит ответом будет некий один отрезок из К

    Потом немножко дорабатываем программу и смотрим на результат

    var

       i, K, counter: integer;

    function F(x: integer): integer;

    begin

       if x < 2 then

           F := 1

       else F := F(x - 1) + 2 * F(x - 2);

    end;

    begin

       for K := 0 to 100 do  

       begin

           i := 28;

           //        readln(K);

           while (i > 0) and (F(i) > K) do  

               i := i - 1;

           

           if i = 5 then begin

               counter := counter + 1;

               writeln(counter, ') K = ', K);

           end;

       end

    end.

    Вывод

    1) K = 21

    2) K = 22

    3) K = 23

    4) K = 24

    5) K = 25

    6) K = 26

    7) K = 27

    8) K = 28

    9) K = 29

    10) K = 30

    11) K = 31

    12) K = 32

    13) K = 33

    14) K = 34

    15) K = 35

    16) K = 36

    17) K = 37

    18) K = 38

    19) K = 39

    20) K = 40

    21) K = 41

    22) K = 42

    Ответ 22

    • Автор:

      starbuck
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years