Пожалуйста, помогите с решением... Определите, количество чисел K, для которых следующая...

0 голосов
29 просмотров

Пожалуйста, помогите с решением... Определите, количество чисел 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.


Информатика (3.7k баллов) | 29 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

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

(55.0k баллов)