
Определите, количество чисел K, для которых следующая программа выведет такой же результат, что и
для K = 30: #include using namespace std; int F(int x) { if (x < 3) return 1; else return 2 * F(x - 1) + F(x - 2); } int main() { int i, k; i = 15; cin >> k; while (i > 0 && F(i) > k) i = i - 1; cout << i; } var i, k: integer; function F(x:integer):integer; begin if x < 3 then F:= 1 else F:= 2*F(x-1) + F(x-2); end; begin i := 15; readln(K); while (i > 0) and (F(i) > K) do i:=i-1; writeln(i); end.

Ответы на вопрос

Ответ:
24
Объяснение:
var
i,j,k: integer;
function F(x:integer):integer;
begin if x < 3 then
F:= 1
else F:= 2*F(x-1) + F(x-2);
end;
begin
for k:=15 to 50 do
begin
i := 15;
while (i > 0) and (F(i) > K) do
i:=i-1;
write(i,' ');
end;
end.



Давайте разберем эту программу и определим количество чисел K, для которых она выведет такой же результат, что и для K = 30.
Данная программа вычисляет рекурсивную функцию F(x), которая определена следующим образом:
scssF(x) = 1, если x < 3
F(x) = 2 * F(x - 1) + F(x - 2), если x >= 3
Затем программа выполняет следующие шаги:
- Инициализирует переменную
i
со значением 15. - Считывает число
k
с помощьюcin
илиreadln
. - Запускает цикл
while
, который выполняется, покаi > 0
иF(i) > k
. - Выводит значение
i
.
Таким образом, программа ищет такое наименьшее значение i
, при котором F(i)
становится меньше или равно k
.
Для K = 30 программа выведет i = 6. Это происходит потому, что:
scssF(15) = 2 * F(14) + F(13)
F(14) = 2 * F(13) + F(12)
F(13) = 2 * F(12) + F(11)
F(12) = 2 * F(11) + F(10)
F(11) = 2 * F(10) + F(9)
F(10) = 2 * F(9) + F(8)
F(9) = 2 * F(8) + F(7)
F(8) = 2 * F(7) + F(6)
F(7) = 2 * F(6) + F(5)
F(6) = 2 * F(5) + F(4)
F(5) = 2 * F(4) + F(3)
F(4) = 2 * F(3) + F(2)
F(3) = 2 * F(2) + F(1)
F(2) = 2 * F(1) + F(0) = 2 * 1 + 1 = 3
F(1) = 1
F(0) = 1
Итак, когда i = 6
, F(i) = 30
, что равно введенному значению k
.
Теперь давайте определим, сколько существует других чисел K
, для которых программа также выведет i = 6
.
Для этого нужно рассмотреть значения F(i)
для i
от 1 до 5, так как при i > 6
, F(i)
станет меньше 30:
scssF(1) = 1
F(2) = 3
F(3) = 6
F(4) = 12
F(5) = 24
Мы видим, что для i = 1, 2, 3, 4, 5
, F(i)
будет меньше 30. Таким образом, существует 5 чисел K
(K = 1, 2, 3, 4, 5), для которых программа также выведет i = 6
.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili