Сопределите, количество чисел 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.

denihaev30 denihaev30    1   30.09.2019 03:20    0

Ответы
mayoll mayoll  09.10.2020 04:29

Для начала смотрим что выходит при К= 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

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика