Задание 6. Дерево решений

advertisement
© К. Поляков, 2009-2012
B13 (повышенный уровень, время – 7 мин)
Тема: Анализ дерева решений.
Что нужно знать:
 уметь строить дерево решений
 уметь искать одинаковые числа в списке
 уметь считать разные числа в списке
Пример задания:
У исполнителя Калькулятор две команды:
1. прибавь 3,
2. вычти 2.
Первая из них увеличивает число на экране на 3, вторая – уменьшает его на 2 (отрицательные
числа допускаются).
Программа для Калькулятора – это последовательность команд. Сколько различных чисел
можно получить из числа 1 с помощью программы, которая содержит ровно 5 команд?
Решение (1 способ, построение полного графа решения):
1) будем строить дерево решений следующим образом: выясним, какое число можно получить
из начального значения 1 за 1 шаг:
-2
1
-1
+3
4
2) теперь посмотрим, что удается получить за 2 шага; учитывая, что (-2+3)=(+3-2), одно из
значений повторяется: мы можем получить -1 + 3 = 2 и 4 – 2 = 2, то есть получается не дерево,
а граф:
-2
1
+3
-1
-3
4
2
7
так с помощью программ, содержащих ровно 2 команды, можно получить 3 различных числа
3) строим еще уровень: программы из 3-х команд дают 4 разных числа:
-2
1
-1
+3
4
2
-3
-5
0
7
5
10
обратим внимание, что числа на каждом уровне отличаются друг от друга на 5 =(+3-(-2), то
есть они не могут повторяться
4) четвертый уровень дает 5 различных чисел:
-2
1
-1
4
2
-3
-5
-7
+3
0
-2
7
5
3
10
8
13
5) и пятый – 6 решений:
1
http://kpolyakov.narod.ru
© К. Поляков, 2009-2012
1
-2
+3
-1
4
2
-3
-5
0
-7
-9
7
5
-2
10
3
-4
8
1
13
6
11
16
6) Ответ: 6.
Решение (2 способ, краткий):
1) как следует из приведенных построений, если система команд исполнителя состоит из двух
команд сложения/ вычитания, то все возможные программы, содержащие ровно N команд ,
дают N+1 различных чисел
2) Ответ: 6.
Решение (3 способ, Л.В. Зенцова, лицей № 36 ОАО "РЖД" г.Иркутска):
1) для сложения справедлив переместительный (коммутативный) закон, значит, порядок
команд в программе не имеет значения
2) поэтому существует всего 6 возможных программ, состоящих ровно из 5 команд (с точностью
до перестановки):
11111
11112
11122
11222
12222
22222
3) Ответ: 6.
Ещё пример задания:
У исполнителя Калькулятор две команды:
1. прибавь 1
2. умножь на 2.
Первая из них увеличивает число на экране на 1, вторая – удваивает его.
Программа для Калькулятора – это последовательность команд. Сколько различных чисел
можно получить из числа 2 с помощью программы, которая содержит ровно 4 команд?
Решение (1 способ, построение полного графа решения):
1) будем строить дерево решений следующим образом: выясним, какое число можно получить
из начального значения 1 за 1 шаг:
2
+1
*2
3
4
2) теперь посмотрим, что удается получить за 2 шага:
+1
2
*2
3
4
4
6
5
8
в отличие от предыдущей задачи, здесь порядок выполнения операций влияет на результат,
поэтому пока все числа получаются разные
2
http://kpolyakov.narod.ru
© К. Поляков, 2009-2012
3) делаем 3-й шаг, получаем 8 разных чисел:
2
+1
*2
3
4
4
5
6
8
7
5
12
6
8
10
9
16
4) на 4-ом шаге рассматриваем все возможные программы из 4-х команд, получаем числа
6, 10, 9, 16, 8, 14, 13, 24, 7, 12, 11, 20, 10, 18, 17, 32
5) здесь всего 16 чисел, но одно из них (10) повторяется 2 раза, а остальные встречаются по 1
разу, поэтому получаем 15 различных чисел
6) Ответ: 15.
Ещё пример задания (ege.yandex.ru):
У исполнителя Калькулятор две команды:
1. прибавь 6
2. вычти 3.
Первая из них увеличивает число на экране на 6, вторая – уменьшает на 3. Если в ходе
вычислений появляется отрицательное число, он выходит из строя и стирает написанное на
экране.
Программа для Калькулятора – это последовательность команд. Сколько различных чисел
можно получить из числа 1 с помощью программы, которая содержит ровно 10 команд?
Решение:
1) особенность этой задачи – у дополнении к условию: «Если в ходе вычислений появляется
отрицательное число, он выходит из строя и стирает написанное на экране»
2) сначала решим задачу без этого ограничения; поскольку две команды 1 и 2 можно
переставлять (последовательное применение команд 1 и 2 дает тот же результат, что и
последовательной применение команд 2 и 1), число различных чисел, которые можно
получить с помощью программы из N = 10 команд равно N+1 = 11 (см. разборы задач,
приведенные выше)
3) проблема в том, что из этих 11 чисел нужно выбросить все отрицательные, так как при
появлении отрицательного числа исполнитель выходит из строя
4) минимальное число получается, если применить к начальному числу 10 команд 2:
1 – 10·3 = –29
5) соседние числа в дереве (см. выше) отличаются на 6 – (–3) = 9, поэтому эти 11 чисел
–29 –20 –11 –2 7 16 25 34 43 52 61
6) из них только 7 чисел положительные
7) Ответ: 7.
Решение (2 способ):
1) заметим, что поскольку две команды 1 и 2 можно переставлять (последовательное
применение команд 1 и 2 дает тот же результат, что и последовательной применение команд
2 и 1), число различных чисел, которые можно получить с помощью программы из N = 10
команд равно N+1 = 11 (см. разборы задач, приведенные выше)
2) разница между соседними числами равна (+6)-(-3)=9 (команды +6 и -3)
3) начальное число – 1, наибольшее число можно получить, применив 10 команд увеличения на
6; получается число
1 + 10·6 = 61
3
http://kpolyakov.narod.ru
© К. Поляков, 2009-2012
4) строим ряд чисел – арифметическую прогрессию с разностью (–9):
61 52 43 34 25 16 7 …
все остальные значения отрицательные
5) таким образом, можно получить только 7 положительных чисел
6) это значение можно посчитать сразу, не выписывая все числа; ответим на вопрос «Сколько
раз можно отнять 9 от числа 61, чтобы получить первое отрицательное число» – получим 7,
так как 61 – 9·7 = –2
7) Ответ: 7.
4
http://kpolyakov.narod.ru
© К. Поляков, 2009-2012
Задачи для тренировки1:
1) У исполнителя Калькулятор две команды:
1. прибавь 2
2. прибавь 3.
Первая из них увеличивает число на экране на 2, вторая – на 3. Сколько различных чисел можно
получить из числа 2 с помощью программы, которая содержит ровно 10 команд?
2) У исполнителя Калькулятор две команды:
1. прибавь 1
2. прибавь 2.
Первая из них увеличивает число на экране на 1, вторая – на 2. Сколько различных чисел можно
получить из числа 2 с помощью программы, которая содержит не более 4 команд?
3) У исполнителя Калькулятор две команды:
1. прибавь 2
2. умножь на 3.
Первая из них увеличивает число на экране на 2, вторая – утраивает его. Сколько различных чисел
можно получить из числа 2 с помощью программы, которая содержит ровно 3 команды?
4) У исполнителя Калькулятор две команды:
1. прибавь 2
2. умножь на 3.
Первая из них увеличивает число на экране на 2, вторая – утраивает его. Сколько различных чисел
можно получить из числа 2 с помощью программы, которая содержит не более 4 команд?
5) У исполнителя Калькулятор две команды:
1. прибавь 1
2. прибавь 4.
Первая из них увеличивает число на экране на 1, вторая – на 4. Сколько различных чисел можно
получить из числа 2 с помощью программы, которая содержит не более 3 команд?
6) У исполнителя Калькулятор две команды:
1. умножь на 2
2. умножь на 3.
Первая из них умножает число на экране на 2, вторая – утраивает его. Сколько различных чисел
можно получить из числа 2 с помощью программы, которая содержит ровно 3 команды?
7) У исполнителя Калькулятор две команды:
1. умножь на 2
2. умножь на 3.
Первая из них умножает число на экране на 2, вторая – утраивает его. Сколько различных чисел
можно получить из числа 2 с помощью программы, которая содержит не более 3 команд?
8) У исполнителя Калькулятор две команды:
1. прибавь 4,
2. вычти 3.
Первая из них увеличивает число на экране на 4, вторая – уменьшает его на 3 (отрицательные
числа допускаются). Программа для Калькулятора – это последовательность команд. Сколько
различных чисел можно получить из числа 1 с помощью программы, которая содержит ровно 7
команд?
9) У исполнителя Калькулятор две команды:
1. прибавь 4,
1
Источники заданий:
1. Тренировочные работы МИОО 2011-2012.
2. Авторские разработки.
5
http://kpolyakov.narod.ru
© К. Поляков, 2009-2012
10)
11)
12)
13)
14)
15)
16)
2. вычти 3.
Первая из них увеличивает число на экране на 4, вторая – уменьшает его на 3. Если в ходе
вычислений появляется отрицательное число, он выходит из строя и стирает написанное на
экране. Программа для Калькулятора – это последовательность команд. Сколько различных чисел
можно получить из числа 0 с помощью программы, которая содержит ровно 17 команд?
У исполнителя Калькулятор две команды:
1. прибавь 2,
2. вычти 4.
Первая из них увеличивает число на экране на 2, вторая – уменьшает его на 4. Если в ходе
вычислений появляется отрицательное число, он выходит из строя и стирает написанное на
экране. Программа для Калькулятора – это последовательность команд. Сколько различных чисел
можно получить из числа 5 с помощью программы, которая содержит ровно 20 команд?
У исполнителя Калькулятор две команды:
1. прибавь 3,
2. вычти 2.
Первая из них увеличивает число на экране на 3, вторая – уменьшает его на 2. Если в ходе
вычислений появляется отрицательное число, он выходит из строя и стирает написанное на
экране. Программа для Калькулятора – это последовательность команд. Сколько различных чисел
можно получить из числа 2 с помощью программы, которая содержит ровно 18 команд?
У исполнителя Калькулятор две команды:
1. прибавь 5,
2. вычти 3.
Первая из них увеличивает число на экране на 5, вторая – уменьшает его на 3. Если в ходе
вычислений появляется отрицательное число, он выходит из строя и стирает написанное на
экране. Программа для Калькулятора – это последовательность команд. Сколько различных чисел
можно получить из числа 4 с помощью программы, которая содержит ровно 30 команд?
У исполнителя Калькулятор две команды:
1. прибавь 3,
2. вычти 4.
Первая из них увеличивает число на экране на 3, вторая – уменьшает его на 4. Если в ходе
вычислений появляется отрицательное число, он выходит из строя и стирает написанное на
экране. Программа для Калькулятора – это последовательность команд. Сколько различных чисел
можно получить из числа 5 с помощью программы, которая содержит ровно 15 команд?
У исполнителя Калькулятор две команды:
1. прибавь 3,
2. вычти 2.
Первая из них увеличивает число на экране на 3, вторая – уменьшает его на 2. Если в ходе
вычислений появляется отрицательное число, он выходит из строя и стирает написанное на
экране. Программа для Калькулятора – это последовательность команд. Сколько различных чисел
можно получить из числа 3 с помощью программы, которая содержит ровно 25 команд?
У исполнителя Калькулятор две команды:
1. прибавь 4,
2. вычти 2.
Первая из них увеличивает число на экране на 4, вторая – уменьшает его на 2. Если в ходе
вычислений появляется отрицательное число, он выходит из строя и стирает написанное на
экране. Программа для Калькулятора – это последовательность команд. Сколько различных чисел
можно получить из числа 8 с помощью программы, которая содержит ровно 16 команд?
У исполнителя Калькулятор две команды:
1. умножь на 6,
6
http://kpolyakov.narod.ru
© К. Поляков, 2009-2012
2. подели на 2.
Первая из них увеличивает число на экране в 6 раз, вторая – уменьшает его в 2 раза. Программа
для Калькулятора – это последовательность команд. Сколько различных чисел можно получить из
числа 512 с помощью программы, которая содержит ровно 6 команд?
17) У исполнителя Калькулятор две команды:
1. умножь на 15,
2. подели на 2.
Первая из них увеличивает число на экране в 15 раз, вторая – уменьшает его в 2 раза. Программа
для Калькулятора – это последовательность команд. Сколько различных чисел можно получить из
числа 4096 с помощью программы, которая содержит ровно 12 команд?
18) У исполнителя Калькулятор две команды:
1. умножь на 8,
2. подели на 3.
Первая из них увеличивает число на экране в 8 раз, вторая – уменьшает его в 3 раза. Программа
для Калькулятора – это последовательность команд. Сколько различных чисел можно получить из
числа 729 с помощью программы, которая содержит ровно 6 команд?
7
http://kpolyakov.narod.ru
Download