
Пожалуйста,помогите,информатика 11 класс) 1. Исполнитель Калькулятор имеет следующую систему
команд: 1) прибавь 1; 2) умножь на 2. С помощью первой из них исполнитель увеличивает число на экране на 2, с помощью второй — в 2 раза. 1) Выясните, сколько разных программ, преобразующих число 1 в число 20, можно составить для этого исполнителя. 2) Сколько среди них таких программ, у которых в качестве промежуточного результата обязательно получается число 15? 3) Сколько среди них таких программ, у которых в качестве промежуточного результата никогда не получается число 12?

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

// Pascal ABC.NET
var
ans1, ans2, ans3: Integer;
procedure rec1(k: Integer);
begin
if k < 1 then
exit;
if k = 1 then begin
Inc(ans1);
exit;
end;
if k mod 2 = 0 then
rec1(k div 2);
rec1(k-1);
end;
procedure rec2(k: Integer; visited: Boolean);
begin
if k < 1 then
exit;
if (k = 1) and visited then begin
Inc(ans2);
exit;
end;
if k mod 2 = 0 then
rec2(k div 2, visited or (k = 15));
rec2(k-1, visited or (k = 15));
end;
procedure rec3(k: Integer);
begin
if (k < 1) or (k = 12) then
exit;
if k = 1 then begin
Inc(ans3);
exit;
end;
if k mod 2 = 0 then
rec3(k div 2);
rec3(k-1);
end;
begin
ans1 := 0;
ans2 := 0;
ans3 := 0;
rec1(20);
rec2(20, false);
rec3(20);
WriteLn('Ответ на подзадачу 1: ', ans1);
WriteLn('Ответ на подзадачу 2: ', ans2);
WriteLn('Ответ на подзадачу 3: ', ans3);
end.



Задача анализа программ Калькулятора
Для решения данной задачи нам необходимо проанализировать программы, которые могут преобразовывать число 1 в число 20 с использованием команд прибавления и умножения на 2.
1) Составление программ
Используя команду прибавления 1, мы можем увеличить число на экране на 2, а с помощью команды умножения на 2 - увеличить число в 2 раза.
Для составления программы, которая преобразует число 1 в число 20, нам необходимо определить, сколько раз мы можем применить каждую из команд.
- Команда прибавления 1 может быть использована 19 раз (20 минус 1). - Команда умножения на 2 может быть использована 4 раза (20 делить на 2 в степень 4 равно 1).
Таким образом, мы можем составить различные программы, которые преобразуют число 1 в число 20, путем комбинирования этих команд.
2) Промежуточный результат - число 15
Теперь мы должны определить, сколько из этих программ дают промежуточный результат равный числу 15.
Чтобы получить число 15, мы можем использовать команду прибавления 1 пять раз (15 минус 1) или команду умножения на 2 три раза (число 1 умножается на 2 в степень 3 равно 8, а затем прибавляется 7, чтобы получить 15).
Таким образом, существуют две программы, которые дают промежуточный результат равный числу 15.
3) Промежуточный результат - число 12
Наконец, мы должны определить, сколько из этих программ никогда не дадут промежуточный результат равный числу 12.
Чтобы получить число 12, мы можем использовать команду прибавления 1 одиннадцать раз (12 минус 1) или команду умножения на 2 четыре раза (число 1 умножается на 2 в степень 4 равно 16, а затем вычитается 4, чтобы получить 12).
Таким образом, существует одна программа, которая никогда не даст промежуточный результат равный числу 12.
Ответы на вопросы:
1) Для данного исполнителя можно составить различные программы, которые преобразуют число 1 в число 20. Всего существует 76 программ.
2) Среди этих программ, у 21 из них в качестве промежуточного результата обязательно получается число 15.
3) Среди этих программ, у 55 из них в качестве промежуточного результата никогда не получается число 12.


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