Задание 23. Графы. Подсчёт количества программ. ЕГЭ 2026 по информатике
Средний процент выполнения: 52%
Ответом к заданию 23 по информатике может быть цифра (число) или слово.
Алгоритм решения задания 23:
- Прочитай алгоритм и зафиксируй начальные значения переменных.
- Определи порядок выполнения команд.
- Выполняй алгоритм пошагово, фиксируя изменения после каждой команды.
- Если есть условия или циклы, проверяй их выполнение на каждом шаге.
- Веди таблицу трассировки для контроля значений переменных.
- Доведи выполнение до конца алгоритма.
- Сформулируй ответ по полученному результату.
Подпишись на суперполезные материалы
Задачи для практики
Задача 1
У исполнителя Считатель-1 три команды, которым присвоены номера:
1. Прибавь 1
2. Умножь на 2
3. Умножь на 3
Первая из них увеличивает число на экране на 1, вторая - в 2 раза, третья - в 3 раза. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 5 преобразуют в число 18?
Решение
Будем считать количество программ постепенно для каждого числа слева направо по следующему принципу:
Если число А можно получить с помощью X программ из начального значения, число B можно получить с помощью Y программ из начального значения, а с помощью одной любой команды из условия число C можно получить только из чисел A и B, то количество программ, с помощью которых можно получить число C из начального значения, равно X + Y.
Таблица, отображающая количество программ для каждого отдельного числа, вычисленная по данному правилу:
| Число | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| Кол-во программ | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 5 | 6 | 6 | 8 |
Ответ: 8.
Задача 2
У исполнителя Считатель-1 две команды, которым присвоены номера:
1. Прибавь 1
2. Умножь на 2
Первая из них увеличивает число на экране на 1, вторая - в 2 раза. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 1 преобразуют в число 25, траектория вычислений которых не проходит через число 9? Траектория вычислений - множество чисел, через которые проходила конкретная программа для получения одного числа из другого.
Решение
Будем считать количество программ постепенно для каждого числа слева направо по следующему принципу:
Если число А можно получить с помощью X программ из начального значения, число B можно получить с помощью Y программ из начального значения, а с помощью одной любой команды из условия число C можно получить только из чисел A и B, то количество программ, с помощью которых можно получить число C из начального значения, равно X + Y.
Таблица, отображающая количество программ для каждого отдельного числа, вычисленная по данному правилу:
| Число | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| Кол-во программ | 1 | 2 | 2 | 4 | 4 | 6 | 6 | 10 | 0 | 4 | 4 | 10 | 10 | 16 | 16 | 26 | 26 | 26 | 26 | 30 | 30 | 34 | 34 | 44 | 44 |
Поиск ответа при помощи программы на С++:
#include <iostream>
using namespace std;
int main(){
const int n0 = 1, nk = 25;
int arr[nk + 1];
for (int i = 0; i < nk + 1; ++i) arr[i] = 0;
arr[n0] = 1;
for (int n = n0 + 1; n <= nk; ++n) {
if (n - 1 >= n0) arr[n] = arr[n - 1]; // Kn-1
if (n % 2 == 0 && (n / 2) >= n0) //K(n / 2)
arr[n] += arr[n / 2];
if (n == 9)
arr[n] = 0;
}
cout << arr[nk];
return 0;
}
Ответ: 44
Задача 3
У исполнителя A2M5 две команды, которым присвоены номера:
1. Прибавь 2
2. Умножь на 5
Первая из них увеличивает данное число на 2, вторая - увеличивает его в 5 раз. Программа для исполнителя A2M5 - это последовательность команд.
Определите количество программ, которые число 1 преобразуют в число 31.
Решение
Заметим, что все числа, получаемые с помощью заданных команд из числа 1, нечётные. Будем решать поставленную задачу последовательно для чисел 1, 3, 5, . . . , 31 (то есть для каждого нечётного числа определим, сколько программ исполнителя существует для его получения). Количество программ, которые преобразуют число 1 в число n, будем обозначать через R(n). Будем считать, что R(1) = 1. Для каждого следующего числа рассмотрим, из какого числа оно может быть получено за одну команду исполнителя. Если число не делится на 5, то оно может быть получено только из предыдущего с помощью команды прибавь 2. Значит, количество искомых программ для такого числа равно количеству программ для предыдущего числа: R(i) = R(i - 2), i - нечётное. Если число на 5 делится, то вариантов последней команды два: прибавь 2 и умножь на 5, тогда R(i) = R(i-2)+R(i=5), i - нечётное. Заполним соответствующую таблицу по приведённым формулам слева направо:
| 1 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 | 21 | 23 | 25 | 27 |
| 1 | 1 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 | 5 | 5 |
| 29 | 31 | ||||||||||||
| 5 | 5 |
Ответ: 5.
Задача 4
У исполнителя X123 три команды, которым присвоены номера:
1. Прибавь 1
2. Прибавь 2
3. Умножь на 3
Первая из них увеличивает число на экране на 1, вторая - на 2, а третья - в 3 раза. Программа для исполнителя X123 - это последовательность команд.
Сколько существует программ, которые число 1 преобразуют в число 10?
Решение
Будем решать поставленную задачу последовательно для чисел 1, 2, 3, . . . , 10 (то есть для каждого из чисел определим, сколько программ исполнителя существует для его получения). Количество программ, которые преобразуют число 1 в число n, будем обозначать через R(n). Число 2 из числа 1 можно получить с помощью команды 1 (также будем считать, что R(1) = 1). Для каждого следующего числа i рассмотрим, из какого числа оно может быть получено за одну команду исполнителя. Если число i не делится на 3, то оно может быть получено либо из i - 1-го с помощью команды прибавь 1, либо из числа i - 2-го с помощью команды прибавь 2. Значит, количество искомых программ для такого числа равно количеству программ для i-1-го и i-2-го чисел:R(i) = R(i-1)+R(i-2). Если число на 3 делится, то вариантов последней команды три: прибавь 1, прибавь 2 и умножь на 3, следовательно, R(i) = R(i-1)+R(i-2)+R(i/3). Заполним соответствующую таблицу по приведенным формулам слева направо:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 1 | 1 | 3 | 4 | 7 | 12 | 19 | 31 | 53 | 84 |
Ответ: 84.
Задача 5
У исполнителя Считатель-1 три команды, которым присвоены номера:
1. Прибавь 2
2. Умножь на 2
3. Умножь на 4
Первая из них увеличивает число на экране на 2, вторая - в 2 раза, третья - в 4 раза. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 2 преобразуют в число 48?
Решение
Будем считать количество программ постепенно для каждого числа слева направо по следующему принципу:
Если число А можно получить с помощью X программ из начального значения, число B можно получить с помощью Y программ из начального значения, а с помощью одной любой команды из условия число C можно получить только из чисел A и B, то количество программ, с помощью которых можно получить число C из начального значения, равно X + Y.
Заметим, что из числа 2 с помощью команд "Прибавь 2", "Умножь на 2" и "Умножь на 4" невозможно получить нечётное число, т.к. чётное +2 = чётное и чётное *любое = чётное. В таблице будем отображать только чётные числа.
Таблица, отображающая количество программ для каждого отдельного числа, вычисленная по данному правилу:
| Число | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 | 20 | 22 | 24 |
| Кол-во программ | 1 | 2 | 2 | 5 | 5 | 7 | 7 | 14 | 14 | 19 | 19 | 28 |
| Число | 26 | 28 | 30 | 32 | 34 | 36 | 38 | 40 | 42 | 44 | 46 | 48 |
| Кол-во программ | 28 | 35 | 35 | 54 | 54 | 68 | 68 | 92 | 92 | 111 | 111 | 146 |
Ответ: 146.
Задача 6
У исполнителя Считатель-1 две команды, которым присвоены номера:
1. Прибавь 1
2. Умножь на 2
Первая из них увеличивает число на экране на 1, вторая - в 2 раза. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 1 преобразуют в число 26, у которых траектория вычислений проходит через число 10? Траектория вычислений - множество чисел, через которые проходила конкретная программа для получения одного числа из другого.
Решение
Будем считать количество программ постепенно для каждого числа слева направо по следующему принципу:
Если число А можно получить с помощью X программ из начального значения, число B можно получить с помощью Y программ из начального значения, а с помощью одной любой команды из условия число C можно получить только из чисел A и B, то количество программ, с помощью которых можно получить число C из начального значения, равно X + Y.
Таблица, отображающая количество программ для каждого отдельного числа, вычисленная по данному правилу:
| Число | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Кол-во программ | 1 | 2 | 2 | 4 | 4 | 6 | 6 | 10 | 10 | 14 |
После числа 10 нельзя пользоваться теми значениями, которые были до числа 10. Поэтому дальнейшая таблица имеет вид:
| Число | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| Кол-во программ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 14 | 14 | 14 | 14 | 14 | 14 | 14 | 14 | 14 | 14 | 28 | 28 | 42 | 42 | 56 | 56 | 70 |
Ответ: 70.
Задача 7
У исполнителя Считатель-1 две команды, которым присвоены номера:
1. Прибавь 1
2. Умножь на 2
Первая из них увеличивает число на экране на 1, вторая - в 2 раза. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 1 преобразуют в число 21, траектория вычислений которых не проходит через число 15? Траектория вычислений - множество чисел, через которые проходила конкретная программа для получения одного числа из другого.
Решение
Будем считать количество программ постепенно для каждого числа слева направо по следующему принципу:
Если число А можно получить с помощью X программ из начального значения, число B можно получить с помощью Y программ из начального значения, а с помощью одной любой команды из условия число C можно получить только из чисел A и B, то количество программ, с помощью которых можно получить число C из начального значения, равно X + Y.
Таблица, отображающая количество программ для каждого отдельного числа, вычисленная по данному правилу:
| Число | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| Кол-во программ | 1 | 2 | 2 | 4 | 4 | 6 | 6 | 10 | 10 | 14 | 14 | 20 | 20 | 26 | 0 | 10 | 10 | 20 | 20 | 34 | 34 |
Ответ: 34
Задача 8
У исполнителя Считатель-1 три команды, которым присвоены номера:
1. Прибавь 2
2. Умножь на 2
3. Умножь на 3
Первая из них увеличивает число на экране на 2, вторая - в 2 раза, третья - в 3 раза. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 2 преобразуют в число 60, у которых траектория вычислений проходит через число 21? Траектория вычислений - множество чисел, через которые проходила конкретная программа для получения одного числа из другого.
Решение
Из числа 2 с помощью команд "Прибавь 2", "Умножь на 2" и "Умножь на 3" невозможно получить нечётное число, т.к. чётное +2 = чётное и чётное *любое = чётное. Следовательно, число 21 получить невозможно, а значит и траектория не может пройти через это число
Ответ: 0.
Задача 9
У исполнителя Считатель-1 три команды, которым присвоены номера:
1. Прибавь 1
2. Прибавь предыдущее
3. Прибавь следующее
Первая из них увеличивает число на экране на 1, вторая - прибавляет к текущему числу на единицу меньшее натуральное число, третья - прибавляет к текущему числу на единицу большее натуральное число. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 1 преобразуют в число 33, причём траектория вычислений не проходит через число 7 и 14, но проходит через число 12? Траектория вычислений - множество чисел, через которые проходила конкретная программа для получения одного числа из другого.
Решение
Будем считать количество программ постепенно для каждого числа слева направо по следующему принципу:
Если число А можно получить с помощью X программ из начального значения, число B можно получить с помощью Y программ из начального значения, а с помощью одной любой команды из условия число C можно получить только из чисел A и B, то количество программ, с помощью которых можно получить число C из начального значения, равно X + Y.
Таблица, отображающая количество программ для каждого отдельного числа, вычисленная по данному правилу:
| Число | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| Кол-во программ | 1 | 1 | 3 | 3 | 7 | 7 | 0 | 0 | 10 | 10 | 24 | 24 |
После числа 12 нельзя пользоваться теми значениями, которые были до числа 12. Поэтому дальнейшая таблица имеет вид:
| Число | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
| Кол-во программ | 24 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 24 | 24 | 72 | 72 | 96 | 96 | 96 | 96 | 96 | 96 | 96 |
Вычисление результата при помощи программы на С++:
#include <iostream>
using namespace std;
int main(){
const int n0 = 1, nk = 33;
int arr[nk + 1];
for (int i = 0; i < nk + 1; ++i) arr[i] = 0;
arr[n0] = 1;
for (int n = n0 + 1; n <= nk; ++n) {
arr[n] = arr[n - 1]; // Kn-1
if (n % 2 != 0 && (n - 1) / 2 >= n0) //K(n - 1)/2
arr[n] += arr[(n - 1) / 2];
if (n % 2 != 0 && (n + 1) / 2 >= n0) //K(n + 1)/2
arr[n] += arr[(n + 1) / 2];
if (n == 7 || n == 14)
arr[n] = 0;
if (n == 12)
for (int i = n - 1; i >=0 ; --i)
arr[i] = 0;
}
cout << arr[nk];
return 0;
}
Ответ: 96.
Задача 10
У исполнителя Считатель-1 три команды, которым присвоены номера:
1. Прибавь 1
2. Прибавь предыдущее
3. Прибавь следующее
Первая из них увеличивает число на экране на 1, вторая - прибавляет к текущему числу на единицу меньшее число, третья - прибавляет к текущему числу на единицу большее число. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 3 преобразуют в число 28, причём траектория вычислений не проходит через число 10? Траектория вычислений - множество чисел, через которые проходила конкретная программа для получения одного числа из другого.
Решение
Будем считать количество программ постепенно для каждого числа слева направо по следующему принципу:
Если существует Х программ для получения числа А из начального значения и Y программ для числа B, а число C можно получить только из чисел A и B, то количество программ, с помощью которых можно получить число C из начального значения, равно X + Y.
Таблица, отображающая количество программ для каждого отдельного числа, вычисленная по данному правилу:
| Число | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| Кол-во программ | 1 | 1 | 2 | 2 | 4 | 4 | 7 | 0 | 4 | 4 | 10 | 10 | 18 |
| Число | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| Кол-во программ | 18 | 29 | 29 | 36 | 36 | 40 | 40 | 48 | 48 | 62 | 62 | 82 | 82 |
Например, рассмотри как было получено количество программ для числа 5:
1) можем ли мы получить 5, прибавив единицу? Да, из числа 4
2) можем ли мы получить 5, прибавив предыдущее? Да, начальное значение = 3, для него «предыдущим» считается 2. 3 + 2 = 5
3) можем ли мы получить 5, прибавив следующее? Нет, поскольку начальное значение = 3, а для него «следующее» это 4 и их сумма = 7
Ответ: 82.
Задача 11
У исполнителя Считатель-1 три команды, которым присвоены номера:
1. Прибавь 1
2. Умножь на 2
3. Умножь на 3
Первая из них увеличивает число на экране на 1, вторая - в 2 раза, третья - в 3 раза. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 2 преобразуют в число 27, у которых траектория вычислений проходит через число 10? Траектория вычислений - множество чисел, через которые проходила конкретная программа для получения одного числа из другого.
Решение
Будем считать количество программ постепенно для каждого числа слева направо по следующему принципу:
Если число А можно получить с помощью X программ из начального значения, число B можно получить с помощью Y программ из начального значения, а с помощью одной любой команды из условия число C можно получить только из чисел A и B, то количество программ, с помощью которых можно получить число C из начального значения, равно X + Y.
Таблица, отображающая количество программ для каждого отдельного числа, вычисленная по данному правилу:
| Число | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| Кол-во программ | 1 | 1 | 2 | 2 | 4 | 4 | 6 | 7 | 9 |
После числа 10 нельзя пользоваться теми значениями, которые были до числа 10. Поэтому дальнейшая таблица имеет вид:
| Число | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| Кол-во программ | 9 | 9 | 9 | 9 | 9 | 9 | 9 | 9 | 9 | 9 | 18 | 18 | 27 | 27 | 36 | 36 | 45 | 45 |
Ответ: 45
Задача 12
У исполнителя A2M5 две команды, которым присвоены номера:
1. Прибавь 2
2. Умножь на 5
Первая из них увеличивает данное число на 2, вторая - увеличивает его в 5 раз. Программа для исполнителя A2M5 - это последовательность команд.
Определите количество программ, которые число 1 преобразуют в число 27.
Решение
Заметим, что все числа, получаемые с помощью заданных команд из числа 1, нечётные. Будем решать поставленную задачу последовательно для чисел 1, 3, 5, . . . , 27 (то есть для каждого нечётного числа определим, сколько программ исполнителя существует для его получения). Количество программ, которые преобразуют число 1 в число n, будем обозначать через R(n). Будем считать, что R(1) = 1. Для каждого следующего числа рассмотрим, из какого числа оно может быть получено за одну команду исполнителя. Если число не делится на 5, то оно может быть получено только из предыдущего с помощью команды прибавь 2. Значит, количество искомых программ для такого числа равно количеству программ для предыдущего числа: R(i) = R(i - 2), i - нечётное. Если число на 5 делится, то вариантов последней команды два: прибавь 2 и умножь на 5, тогда R(i) = R(i-2)+R(i=5), i - нечётное. Заполним соответствующую таблицу по приведённым формулам слева направо:
| 1 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 | 21 | 23 | 25 | 27 |
| 1 | 1 | 2 | 2 | 2 | 2 | 2 | 3 | 3 | 3 | 3 | 3 | 5 | 5 |
Ответ: 5.
Задача 13
У исполнителя X13 две команды, которым присвоены номера:
1. Прибавь 1
2. Умножь на 3
Первая из них увеличивает число на экране на 1, вторая - в 3 раза. Программа для исполнителя X13 - это последовательность команд.
Сколько существует программ, которые число 1 преобразуют в число 34, причём траектория вычислений содержит число 11?
Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы 1211 при исходном числе 2 траектория будет состоять из чисел 3; 9; 10; 11.
Решение
Количество программ, которые число 1 преобразуют в число 34 и при этом траектория вычислений содержит число 11 равно произведению числа программ, которые преобразуют число 1 в число 11 на число программ, преобразующих число 11 в число 34.
Сначала определим количество программ, преобразующих число 1 в 11. Будем решать поставленную задачу последовательно для чисел 1, 2, 3, . . . , 11 (то есть для каждого из этих чисел определим, сколько программ исполнителя существует для его получения).
Количество программ, которые преобразуют число 1 в число n, будем обозначать через R(n). Будем считать, что R(1) = 1. Для каждого следующего числа рассмотрим, из какого числа оно может быть получено за одну команду исполнителя. Если число не делится на 3, то оно может быть получено только из предыдущего с помощью команды прибавь 1. Значит, количество искомых программ для такого числа равно количеству программ для предыдущего числа: R(i) = R(i - 1). Если число на 3 делится, то вариантов последней команды два: прибавь 1 и умножь на 3, тогда R(i) = R(i - 1) + R(i/3). Заполним соответствующую таблицу по приведённым формулам слева направо:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 1 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | 5 | 5 | 5 |
Следовательно, количество программ, преобразующих число 1 в 11, равно 5.
Теперь определим количество программ, преобразующих число 11 в 34.
Будем считать, что R(11) = 1. Для каждого следующего числа 12, 13, . . . , 34 рассмотрим, из какого числа оно может быть получено за одну команду исполнителя. Если число не делится на 3, то оно может быть получено только из предыдущего с помощью команды прибавь 1. Значит, количество искомых программ для такого числа равно количеству программ для предыдущего числа: R(i) = R(i - 1). Если число на 3 делится, то вариантов последней команды два: прибавь 1 и умножь на 3, тогда R(i) = R(i - 1) + R(i/3). Заполним соответствующую таблицу по приведённым формулам слева направо:
| 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | ||||
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 2 |
Следовательно, количество программ, преобразующих число 11 в 34, равно 2.
Количество программ, которые число 1 преобразуют в число 34 и при этом траектория вычислений содержит число 11, равно 5 · 2 = 10.
Ответ: 10.
Задача 14
У исполнителя Уменьшитель две команды, которым присвоены номера:
1. Разделить на 2
2. Вычесть 1
Первая из них уменьшает число на экране в 2 раза, вторая - уменьшает его на 1. Программа для исполнителя Уменьшитель - это последовательность команд.
Определите количество программ, которые число 30 преобразуют в число 7.
Решение
x = [0] * (30 + 1) #Заводим список, где индексы - числа, а значения - количества программ
x[7] = 1
for i in range(8, 30 + 1):
x[i] += x[i - 1] # Вычесть 1
if i % 2 == 0:
x[i] += x[i // 2] # Разделить на 2
print(x[30])
Задача 15
У исполнителя X132 три команды, которым присвоены номера:
1. Прибавь 1
2. Прибавь 3
3. Умножь на 2
Первая из них увеличивает число на экране на 1, вторая - на 3, а третья - в 2 раза. Программа для исполнителя X132 - это последовательность команд.
Сколько существует программ, которые число 1 преобразуют в число 15, причём траектория вычислений содержит числа 6 и 10?
Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы 1323 при исходном числе 4 траектория будет состоять из чисел 5; 10; 13; 26.
Решение
Количество программ, которые число 1 преобразуют в число 15, причём траектория вычислений содержит числа 6 и 10, равно произведению числа программ, преобразующих число 1 в число 6, число 6 в число 10 и число 10 в число 15.
Сначала определим количество программ, преобразующих число 1 в 6. Будем решать поставленную задачу последовательно для чисел 1, 2, 3, 4, 5, 6 (то есть для каждого из этих чисел определим, сколько программ исполнителя существует для его получения).
Количество программ, которые преобразуют число 1 в число n, будем обозначать через R(n). Будем считать, что R(1) = 1. Для каждого следующего числа i рассмотрим, из какого числа оно может быть получено за одну команду исполнителя. Если число i нечётно, то оно может быть получено либо из i - 1-го с помощью команды прибавь 1, либо из числа i-3-го с помощью команды прибавь 3. Значит, количество искомых программ для такого числа равно количеству программ для i-1-го и i-3-го чисел: R(i) = R(i-1)+R(i-3). Если число чётно, то вариантов последней команды три: прибавь 1, прибавь 3 и умножь на 2, следовательно, R(i) = R(i-1)+R(i-3)+R(i=2). Заполним соответствующую таблицу по приведённым формулам слева направо:
| 1 | 2 | 3 | 4 | 5 | 6 |
| 1 | 2 | 2 | 5 | 7 | 11 |
Следовательно, количество программ, преобразующих число 1 в 6, равно 11.
Теперь определим количество программ, преобразующих число 6 в 10.
Будем считать, что R(10) = 1. Для каждого следующего числа 11, 12, . . . , 15 рассмотрим, из какого числа оно может быть получено за одну команду исполнителя. Если число нечётно, то оно может быть получено либо из i - 1-го с помощью команды прибавь 1, либо из числа i - 3-го с помощью команды прибавь 3. Значит, количество искомых программ для такого числа равно количеству программ для i - 1-го и i - 3-го чисел: R(i) = R(i - 1) + R(i - 3). Если число чётно, то вариантов последней команды три: прибавь 1, прибавь 3 и умножь на 2, следовательно, R(i) = R(i-1)+R(i-3)+R(i=2). Заполним соответствующую таблицу по приведённым формулам слева направо:
| 6 | 7 | 8 | 9 | 10 |
| 1 | 1 | 1 | 2 | 3 |
Следовательно, количество программ, преобразующих число 6 в 10, равно 3.
Рассуждая аналогично предыдущим случаям, определим количество программ, преобразующих число 10 в 15.
| 10 | 11 | 12 | 13 | 14 | 15 |
| 1 | 1 | 1 | 2 | 3 | 4 |
Следовательно, количество программ, преобразующих число 10 в 15, равно 4.
Количество программ, которые число 1 преобразуют в число 15, причём траектория вычислений содержит числа 6 и 10, равно 11 · 3 · 4 = 132.
Ответ: 132.
Задача 16
У исполнителя Считатель-1 две команды, которым присвоены номера:
1. Прибавь 2
2. Умножь на 3
Первая из них увеличивает число на экране на 2, вторая - в 3 раза. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 1 преобразуют в число 58?
Решение
Из числа 1 с помощью команд "Прибавь 2" и "Умножь на 3" невозможно получить чётное число, т.к. нечётное +2 = нечётное и нечётное *3 = нечётное. Следовательно, число 58 получить невозможно.
Ответ: 0.
Задача 17
У исполнителя Р134 три команды, которым присвоены номера:
1. Прибавь 1
2. Прибавь 3
3. Прибавь 4
Первая из них увеличивает число на экране на 1, вторая на 3, а третьяна 4. Программа для исполнителя A134 это последовательность команд.
Сколько существует программ, которые число 8 преобразуют в число 22, причём траектория вычислений содержит число 17?
Траектория вычислений программы это последовательность результатов выполнения всех команд программы. Например, для программы 231 при исходном числе 5 траектория будет состоять из чисел 8; 12; 13.
Решение
Количество программ, которые число 8 преобразуют в число 22, и при этом траектория вычислений содержит число 17, равно произведению числа программ, которые преобразуют число 8 в число 17, и числа программ, преобразующих число 17 в число 22.
Сначала определим количество программ, преобразующих число 8 в 17. Будем решать поставленную задачу последовательно для чисел 8, 9, 10, . . . , 17 (то есть для каждого из этих чисел определим, сколько программ исполнителя существует для его получения).
Количество программ, которые преобразуют число k в число n, будем обозначать через R(n). Будем считать, что R(k) = 1. Для чисел k + 1, k + 2 R(i) = R(i - 1). Для числа k + 3 количество программ, с помощью которых может быть получено это число из числа k, можно посчитать по формуле R(i) = R(i - 1) + R(i - 3). Количество программ, с помощью которых может быть получено каждое следующее число из числа k, можно посчитать по формуле R(i) = R(i - 1) + R(i - 3) + R(i - 4).
| 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 1 | 1 | 1 | 2 | 4 | 6 | 9 | 15 | 25 | 40 |
Следовательно, количество программ, преобразующих число 8 в 17, равно 40.
Теперь определим количество программ, преобразующих число 17 в 22.
Будем считать, что R(17) = 1. Для каждого следующего числа 18, 19, . . . , 22 рассмотрим, из какого числа оно может быть получено за одну команду исполнителя.
Заполним соответствующую таблицу по приведённым формулам слева направо:
| 17 | 18 | 19 | 20 | 21 | 22 |
| 1 | 1 | 1 | 2 | 4 | 6 |
Следовательно, количество программ, преобразующих число 17 в 22, равно 6.
Количество программ, которые число 8 преобразуют в число 22 и при этом траектория вычислений содержит число 17, равно 40 · 6 = 240.
Поиск ответа при помощи программы на С++:
#include <iostream>
using namespace std;
int main(){
const int n0 = 8, nk = 22;
int arr[nk + 1];
for (int i = 0; i < nk + 1; ++i) arr[i] = 0;
arr[n0] = 1;
for (int n = n0 + 1; n <= nk; ++n) {
if (n - 1 >= n0) arr[n] += arr[n - 1]; // Kn-1
if (n - 3 >= n0) arr[n] += arr[n - 3]; // Kn-3
if (n - 4 >= n0) arr[n] += arr[n - 4]; // Kn-4
if (n == 17)
for (int i = n - 1; i >= 0; --i) arr[i] = 0;
}
cout << arr[nk];
return 0;
}
Ответ: 240.
Задача 18
У исполнителя Считатель-1 две команды, которым присвоены номера:
1. Прибавь 2
2. Умножь на 3
Первая из них увеличивает число на экране на 2, вторая - в 3 раза. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 3 преобразуют в число 47, причём траектория вычислений проходит через число 14? Траектория вычислений - множество чисел, через которые проходила конкретная программа для получения одного числа из другого.
Решение
Из числа 3 с помощью команд "Прибавь 2" и "Умножь на 3" невозможно получить чётное число, т.к. нечётное +2 = нечётное и нечётное *3 = нечётное. Следовательно, число 14 получить невозможно. Тогда никакая траектория из числа 3 в число 47 не пройдёт через число 14.
Ответ: 0.
Задача 19
У исполнителя Считатель-1 две команды, которым присвоены номера:
1. Прибавь 2
2. Умножь на 3
Первая из них увеличивает число на экране на 2, вторая - в 3 раза. Программа для исполнителя Считатель-1 - это последовательность команд.
Сколько существует программ, которые число 3 преобразуют в число 23?
Решение
Будем считать количество программ постепенно для каждого числа слева направо по следующему принципу:
Если число А можно получить с помощью X программ из начального значения, число B можно получить с помощью Y программ из начального значения, а с помощью одной любой команды из условия число C можно получить только из чисел A и B, то количество программ, с помощью которых можно получить число C из начального значения, равно X + Y.
Из числа 3 с помощью команд "Прибавь 2" и "Умножь на 3" невозможно получить чётное число. Значит, чётные числа можно не писать.
Таблица, отображающая количество программ для каждого отдельного числа, вычисленная по данному правилу:
| Число | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 | 21 | 23 |
| Кол-во программ | 1 | 1 | 1 | 2 | 2 | 2 | 3 | 3 | 3 | 4 | 4 |
Поиск ответа при помощи программы на С++:
#include <iostream>
using namespace std;
int main(){
const int n0 = 3, nk = 23;
int arr[nk + 1];
for (int i = 0; i < nk + 1; ++i) arr[i] = 0;
arr[n0] = 1;
for (int n = n0 + 1; n <= nk; ++n) {
if (n - 2 >= n0) arr[n] = arr[n - 2]; // Kn-1
if (n % 3 == 0 && (n / 3) >= n0) //K(n / 3) - умножь на 3
arr[n] += arr[n / 3];
}
cout << arr[nk];
return 0;
}
Ответ: 4.
Задача 20
У исполнителя Вычислитель три команды, которым присвоены номера:
1. Прибавь 1
2. Прибавь 2
3. Умножь на 3
Первая из них увеличивает число на экране на 1, вторая - на 2, а третья - в 3 раза. Программа для исполнителя X123 - это последовательность команд.
Сколько существует программ, которые число 1 преобразуют в число 8?
Решение
Будем решать поставленную задачу последовательно для чисел 1, 2, 3, . . . , 8 (то есть для каждого из чисел определим, сколько программ исполнителя существует для его получения). Количество программ, которые преобразуют число 1 в число n, будем обозначать через R(n). Число 2 из числа 1 можно получить с помощью команды 1 (также будем считать, что R(1) = 1). Для каждого следующего числа i рассмотрим, из какого числа оно может быть получено за одну команду исполнителя. Если число i не делится на 3, то оно может быть получено либо из i - 1-го с помощью команды прибавь 1, либо из числа i - 2-го с помощью команды прибавь 2. Значит, количество искомых программ для такого числа равно количеству программ для i-1-го и i-2-го чисел:R(i) = R(i-1)+R(i-2). Если число на 3 делится, то вариантов последней команды три: прибавь 1, прибавь 2 и умножь на 3, следовательно, R(i) = R(i-1)+R(i-2)+R(i/3). Заполним соответствующую таблицу по приведенным формулам слева направо:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 1 | 1 | 3 | 4 | 7 | 12 | 19 | 31 |
Ответ: 31.
Рекомендуемые курсы подготовки
- Узнаешь как кодируется изображение
- Поймешь как решать 7 номер ЕГЭ
- Разберешься с паролями
- Потренируешь 11 и 4 номер ЕГЭ
на бесплатном курсе Турбо ЕГЭ