СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Задание 22 (презентация по типам задач к ЕГЭ)

Категория: Информатика

Нажмите, чтобы узнать подробности

В данной презентации рассматриваются основные типы задач на умение анализировать результат исполнения алгоритма. В презентации использованы типовые задачи с решениями из материалов К.Ю.Полякова с сайта http://kpolyakov.spb.ru  ... ...

Просмотр содержимого документа
«Задание 22 (презентация по типам задач к ЕГЭ)»

Ege 22 ( повышенный уровень , время – 7 мин ) Тема: динамическое программирование Умение анализировать результат исполнения алгоритма Что нужно знать : динамическое программирование – это способ решения сложных задач путем сведения их к более простым задачам того же типа с помощью динамического программирования решаются задачи, которые требуют полного перебора вариантов: «подсчитайте количество вариантов…» «как оптимально распределить…» «найдите оптимальный маршрут…» «подсчитайте количество вариантов…» «как оптимально распределить…» «найдите оптимальный маршрут…» динамическое программирование позволяет ускорить выполнение программы за счет использования дополнительной памяти; полный перебор не требуется, поскольку запоминаются решения всех задач с меньшими значениями параметров

Ege 22 ( повышенный уровень , время – 7 мин )

Тема: динамическое программирование

Умение анализировать результат исполнения алгоритма

Что нужно знать :

  • динамическое программирование – это способ решения сложных задач путем сведения их к более простым задачам того же типа
  • с помощью динамического программирования решаются задачи, которые требуют полного перебора вариантов:
  • «подсчитайте количество вариантов…» «как оптимально распределить…» «найдите оптимальный маршрут…»
  • «подсчитайте количество вариантов…»
  • «как оптимально распределить…»
  • «найдите оптимальный маршрут…»
  • динамическое программирование позволяет ускорить выполнение программы за счет использования дополнительной памяти; полный перебор не требуется, поскольку запоминаются решения всех задач с меньшими значениями параметров
Пример I: У исполнителя Утроитель две команды, которым присвоены номера: 1. прибавь 1 2. умножь на 3 Первая из них увеличивает число на экране на 1, вторая – утраивает его. Программа для Утроителя – это последовательность команд. Сколько есть программ, которые число 1 преобразуют в число 20 ? Решение 1. Для чисел 1 и 2, меньших, чем 3 , существует только 1 программа, состоящая только из команд сложения 2. Если число N не делится на 3 , то оно могло быть получено только  последней операцией сложения, поэтому 3. Для получения количества программ будем использовать рекуррентные формулы если N не делится на 3 если N делится на 3

Пример I:

У исполнителя Утроитель две команды, которым присвоены номера:

1. прибавь 1

2. умножь на 3

Первая из них увеличивает число на экране на 1, вторая – утраивает его.

Программа для Утроителя – это последовательность команд.

Сколько есть программ, которые число 1 преобразуют в число 20 ?

Решение

1. Для чисел 1 и 2, меньших, чем 3 , существует только 1 программа, состоящая только из команд сложения

2. Если число N не делится на 3 , то оно могло быть получено только

последней операцией сложения, поэтому

3. Для получения количества программ будем использовать рекуррентные формулы

если N не делится на 3

если N делится на 3

4. Заполним таблицу для всех значений от 1 до N: если N не делится на 3 если N делится на 3 N 1 1 2 1 3 2 4 2 5 2 6 3 7 3 8 3 9 5 10 11 5 5 12 13 7 7 14 15 7 9 16 9 17 9 18 12 19 12 20 12 5. Видно, что количество вариантов меняется только в тех столбцах, где N делится на 3 , поэтому из всей таблицы можно оставить только эти столбцы: N 1 1 3 2 6 3 9 5 12 7 15 9 18 20 12 12 Ответ:  12

4. Заполним таблицу для всех значений от 1 до N:

если N не делится на 3

если N делится на 3

N

1

1

2

1

3

2

4

2

5

2

6

3

7

3

8

3

9

5

10

11

5

5

12

13

7

7

14

15

7

9

16

9

17

9

18

12

19

12

20

12

5. Видно, что количество вариантов меняется только в тех столбцах, где N делится на 3 , поэтому из всей таблицы можно оставить только эти столбцы:

N

1

1

3

2

6

3

9

5

12

7

15

9

18

20

12

12

Ответ: 12

21 могло быть получено одной из трёх операций сложения соответственно из чисел N-1 , N-2 и N-4 , поэтому 4. Заполним таблицу для всех значений от 21 до 30: N 21 22 1 1 23 24 2 25 3 26 6 27 10 28 18 31 29 55 30 96 Ответ: 96 " width="640"

Пример II:

Исполнитель Май4 преобразует число, записанное на экране. У исполнителя три команды, которым присвоены номера:

1. прибавь 1 2. прибавь 2 3. прибавь 4

Первая из них увеличивает число на экране на 1, вторая увеличивает это число на 2, а третья – на 4. Программа для исполнителя Май4 – это последовательность команд. Сколько есть программ, которые число 21 преобразуют в число 30 ?

Решение

1. Видно, что при выполнении любой из команд число увеличивается (не может уменьшаться)

2. Все числа, меньше 21 , с помощью этого исполнителя получить нельзя, для них количество программ будет равно 0

3. Любое число N 21 могло быть получено одной из трёх операций сложения соответственно из чисел N-1 , N-2 и N-4 , поэтому

4. Заполним таблицу для всех значений от 21 до 30:

N

21

22

1

1

23

24

2

25

3

26

6

27

10

28

18

31

29

55

30

96

Ответ: 96

Пример III: У исполнителя Калькулятор две команды, которым присвоены номера: 1. прибавь 1 2. увеличь вторую с конца цифру на 1 Первая из них увеличивает число на экране на 1, вторая – увеличивает на 1 число десятков . Если перед выполнением команды 2 вторая с конца цифра равна 9, она не изменяется . Программа для Калькулятора – это последовательность команд. Сколько есть программ, которые число 15 преобразуют в число 28 ? Решение при заданных командах очередное число N может быть получено двумя способами: увеличением на 1 (для всех чисел, больших начального числа); увеличением числа десятков на 1 (то есть, фактически командой «+ 10 ») – для всех чисел, больших или равных 25; например, число 24 не может быть получено этой командой (14 + 10 = 24), потому что число 14 меньше, чем начальное значение 15

Пример III:

У исполнителя Калькулятор две команды, которым присвоены номера:

1. прибавь 1

2. увеличь вторую с конца цифру на 1

Первая из них увеличивает число на экране на 1, вторая – увеличивает на 1 число десятков . Если перед выполнением команды 2 вторая с конца цифра равна 9, она не изменяется . Программа для Калькулятора – это последовательность команд.

Сколько есть программ, которые число 15 преобразуют в число 28 ?

Решение

при заданных командах очередное число N может быть получено двумя способами:

  • увеличением на 1 (для всех чисел, больших начального числа);
  • увеличением числа десятков на 1 (то есть, фактически командой «+ 10 ») – для всех чисел, больших или равных 25;

например, число 24 не может быть получено этой командой (14 + 10 = 24), потому что число 14 меньше, чем начальное значение 15

таким образом, рекуррентные формулы принимают вид для всех чисел, меньших, чем 25 для чисел, больших или равных 25 15 16 1 17 1 1 18 19 1 20 1 21 1 22 1 23 1 1 24 25 1 26 2 27 3 28 4 5 Ответ: 5

таким образом, рекуррентные формулы принимают вид

для всех чисел, меньших, чем 25

для чисел, больших или равных 25

15

16

1

17

1

1

18

19

1

20

1

21

1

22

1

23

1

1

24

25

1

26

2

27

3

28

4

5

Ответ: 5

Пример IV: У исполнителя Калькулятор две команды, которым присвоены номера: 1. прибавь 1 2. увеличь две младшие цифры на 1 Первая из них увеличивает число на экране на 1, вторая – увеличивает на 1 число десятков и число единиц. Если перед выполнением команды 2 какая-либо из двух младших цифр равна 9 , она не изменяется. Программа для Калькулятора – это последовательность команд. Сколько есть программ, которые число 23 преобразуют в число 48 ? Решение при заданных командах очередное число N может быть получено двумя способами: увеличением на 1 (для всех чисел, больших начального числа) увеличением обеих цифр на 1 в результате выполнения команды 2 (то есть, фактически командой «+11») – для всех чисел, больших или равных 23 + 11 = 34 , которые НЕ  оканчиваются на 0 ;

Пример IV:

У исполнителя Калькулятор две команды, которым присвоены номера:

1. прибавь 1

2. увеличь две младшие цифры на 1

Первая из них увеличивает число на экране на 1, вторая – увеличивает на 1 число десятков и число единиц. Если перед выполнением команды 2 какая-либо из двух младших цифр равна 9 , она не изменяется. Программа для Калькулятора – это последовательность команд.

Сколько есть программ, которые число 23 преобразуют в число 48 ?

Решение

при заданных командах очередное число N может быть получено двумя способами:

  • увеличением на 1 (для всех чисел, больших начального числа)
  • увеличением обеих цифр на 1 в результате выполнения команды 2 (то есть, фактически командой «+11») – для всех чисел, больших или равных 23 + 11 = 34 , которые НЕ оканчиваются на 0 ;
увеличением только младшей  цифры на 1 в результате выполнения команды 2 (то есть, фактически командой «+1») – для всех чисел от 91 до 99 , но в нашем диапазоне ( 23 … 48 ) таких нет увеличением  только старшей цифры на 1 в результате выполнения команды 2 (то есть, фактически командой «+10») – для всех чисел, больших 34 и имеющих 9 на конце; в нашем случае под этот вариант подходит только число 39 Тогда рекуррентные формулы принимают вид: для всех чисел, меньших, чем 34 , а также для всех чисел, оканчивающихся на 0 для чисел, больших или равных 34 , кроме 39 Ответ: 26 для числа 39 далее заполняем таблицу: N 23 K N … 1 … 33 34 1 2 35 36 3 37 4 38 5 6 39 8 40 8 41 9 42 10 43 11 44 12 45 14 46 17 47 21 48 26
  • увеличением только младшей цифры на 1 в результате выполнения команды 2 (то есть, фактически командой «+1») – для всех чисел от 91 до 99 , но в нашем диапазоне ( 23 … 48 ) таких нет
  • увеличением только старшей цифры на 1 в результате выполнения команды 2 (то есть, фактически командой «+10») – для всех чисел, больших 34 и имеющих 9 на конце; в нашем случае под этот вариант подходит только число 39

Тогда рекуррентные формулы принимают вид:

для всех чисел, меньших, чем 34 , а также для всех чисел, оканчивающихся на 0

для чисел, больших или равных 34 , кроме 39

Ответ: 26

для числа 39

далее заполняем таблицу:

N

23

K N

1

33

34

1

2

35

36

3

37

4

38

5

6

39

8

40

8

41

9

42

10

43

11

44

12

45

14

46

17

47

21

48

26

Пример V: Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя три команды, которым присвоены номера: 1. прибавь 1   2. прибавь 2   3. прибавь следующее Первая из них увеличивает число на экране на 1, вторая увеличивает это число на 2, а третья прибавляет к числу на экране число, большее на 1 (к числу 3 прибавляется 4, к числу 9 прибавляется 10 и т. д.). Программа для исполнителя Калькулятор– это последовательность команд. Сколько есть программ, которые число 2 преобразуют в число 10 ? Решение число N могло быть получено одной из трёх операций сложения: увеличением на 1 числа N-1; увеличением на 2 числа N-2; из некоторого числа X увеличением на X+1 (следующее число), так что N = X + X + 1, откуда X = (N – 1) / 2; а так могут быть получены только нечетные числа; поэтому для нечётных чисел для чётных чисел

Пример V:

Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя три команды, которым присвоены номера:

1. прибавь 1 2. прибавь 2 3. прибавь следующее

Первая из них увеличивает число на экране на 1, вторая увеличивает это число на 2, а третья прибавляет к числу на экране число, большее на 1 (к числу 3 прибавляется 4, к числу 9 прибавляется 10 и т. д.). Программа для исполнителя Калькулятор– это последовательность команд. Сколько есть программ, которые число 2 преобразуют в число 10 ?

Решение

число N могло быть получено одной из трёх операций сложения:

  • увеличением на 1 числа N-1;
  • увеличением на 2 числа N-2;
  • из некоторого числа X увеличением на X+1 (следующее число),

так что N = X + X + 1, откуда X = (N – 1) / 2;

а так могут быть получены только нечетные числа; поэтому

для нечётных чисел

для чётных чисел

для чётных чисел для нечётных чисел заполним таблицу для всех значений от 2 до 10 N 2 1 3 1 4 2 5 6 4 6 7 8 11 17 9 30 10 47 Ответ: 47

для чётных чисел

для нечётных чисел

заполним таблицу для всех значений от 2 до 10

N

2

1

3

1

4

2

5

6

4

6

7

8

11

17

9

30

10

47

Ответ: 47

Пример VI: Исполнитель Июнь15 преобразует число на экране. У исполнителя есть две команды, которым присвоены номера: 1. Прибавить 1   2. Умножить на 2 Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя Июнь15 – это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является число 21 и при этом траектория вычислений содержит число 10 ? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Решение:  число N могло быть получено одной из двух операций: 1). увеличением на 1 числа N-1;  2). умножением на 2 числа N/2 (только для N, которые делятся на 2); для нечётных чисел для чётных чисел существует только одна пустая программа , не содержащая ни одной команды

Пример VI:

Исполнитель Июнь15 преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:

1. Прибавить 1 2. Умножить на 2

Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя Июнь15 – это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является число 21 и при этом траектория вычислений содержит число 10 ? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы.

Решение:

  • число N могло быть получено одной из двух операций:

1). увеличением на 1 числа N-1;

2). умножением на 2 числа N/2 (только для N, которые делятся на 2);

для нечётных чисел

для чётных чисел

существует только одна пустая программа , не содержащая ни одной команды

 поскольку траектория должна проходить через число 10 , сначала выясняем, сколькими способами можно получить 10 из 1 , а затем будем считать, сколько есть способов получить 21 из 10 для нечётных чисел для чётных чисел N 1 2 1 3 2 4 2 5 4 4 6 7 6 8 6 9 10 10 10 14 второй этап – определяем таким же образом (и по таким же формулам!), сколько есть способов получить конечное число 21 из 10 , только левую часть таблицы (от 1 до 10) мы уже не рассматриваем: N 10 11 14 12 14 13 14 14 14 14 15 14 16 17 14 14 18 19 14 14 20 28 21 28 Ответ: 28
  • поскольку траектория должна проходить через число 10 , сначала выясняем, сколькими способами можно получить 10 из 1 , а затем будем считать, сколько есть способов получить 21 из 10

для нечётных чисел

для чётных чисел

N

1

2

1

3

2

4

2

5

4

4

6

7

6

8

6

9

10

10

10

14

второй этап – определяем таким же образом (и по таким же формулам!), сколько есть способов получить конечное число 21 из 10 , только левую часть таблицы (от 1 до 10) мы уже не рассматриваем:

N

10

11

14

12

14

13

14

14

14

14

15

14

16

17

14

14

18

19

14

14

20

28

21

28

Ответ: 28

Пример VII: Вариант 1 Исполнитель Июнь15 преобразует число на экране. У исполнителя есть две команды, которым присвоены номера: Прибавить 1 Умножить на 2 Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя Июнь15 – это последовательность команд. Сколько существует программ, для которых при исходном числе 2  результатом является число 29 и при этом траектория вычислений содержит число 14 и не содержит числа 25 ? Решение  в задании две особые точки – числа 14  (через которое должна проходить траектория) и 25 (куда она попасть НЕ должна)  составим рекуррентную формулу, по которой будем вычислять количество разных программ  для получения числа N из начального числа : число N могло быть получено одной из двух операций:  увеличением на 1 числа N-1  умножением на 2 числа N/2 (только для N, которые делятся на 2)

Пример VII:

Вариант 1

Исполнитель Июнь15 преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:

  • Прибавить 1
  • Умножить на 2

Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя Июнь15 – это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является число 29 и при этом траектория вычислений содержит число 14 и не содержит числа 25 ?

Решение

  • в задании две особые точки – числа 14 (через которое должна проходить траектория) и 25 (куда она попасть НЕ должна)
  • составим рекуррентную формулу, по которой будем вычислять количество разных программ для получения числа N из начального числа :

число N могло быть получено одной из двух операций:

  • увеличением на 1 числа N-1
  • умножением на 2 числа N/2 (только для N, которые делятся на 2)
для начального числа 2 количество программ равно 1 (существует только одна пустая программа, не содержащая ни одной команды)  для нечётных чисел Ответ: 13   для чётных чисел 3. составляем таблицу до первой особой точки – числа 14 : N 2 1 3 4 1 2 5 2 6 3 7 3 8 5 9 5 10 7 11 7 12 10 13 10 14 13 4. заполняем вторую часть таблицы (до второй контрольной точки, 25 ) с этого числа заново, считая, что все ячейки для меньших чисел – нулевые  N 14 13 15 13 16 13 17 13 18 13 19 13 20 13 21 13 22 23 13 24 13 13 25 0 26 27   28     29   5. поскольку траектория не может проходить через 25 , для N = 25 принимаем K N = 0 6. дальше заполняем оставшиеся ячейки второй части  таблицы обычным способом Ответ: 13 N 14 13 15 13 16 13 17 18 13 19 13 13 20 13 21 22 13 13 23 13 24 13 25 0 26 0 27 0 28 13 29 13

для начального числа 2 количество программ равно 1 (существует только одна пустая программа, не содержащая ни одной команды)

для нечётных чисел

Ответ: 13

для чётных чисел

3. составляем таблицу до первой особой точки – числа 14 :

N

2

1

3

4

1

2

5

2

6

3

7

3

8

5

9

5

10

7

11

7

12

10

13

10

14

13

4. заполняем вторую часть таблицы (до второй контрольной точки, 25 ) с этого числа заново, считая, что все ячейки для меньших чисел – нулевые

N

14

13

15

13

16

13

17

13

18

13

19

13

20

13

21

13

22

23

13

24

13

13

25

0

26

27

 

28

 

 

29

 

5. поскольку траектория не может проходить через 25 , для N = 25 принимаем K N = 0

6. дальше заполняем оставшиеся ячейки второй части таблицы обычным способом

Ответ: 13

N

14

13

15

13

16

13

17

18

13

19

13

13

20

13

21

22

13

13

23

13

24

13

25

0

26

0

27

0

28

13

29

13

Пример VIII: Вариант 3 У исполнителя Удвоитель две команды, которым присвоены номера: 1. Прибавить 1 (увеличивает число на экране на 1) 2. Умножить на 2 (умножает его на 2) Программа для исполнителя Удвоитель – это последовательность команд. Сколько существует программ , преобразующих число 4  в число 24 , предпоследней командой которых является команда « 1 » ? Решение:  По условию, предпоследняя команда должна быть № 1, при этом последняя команда может быть любая – №1 или №2. Т.е. нужно получить количество всех программ вида « *11 » и « *12 », где звёздочка обозначает любые команды 2. если программа заканчивается на « 11 », то до выполнения цепочки « 11 » было число 24 – 1 – 1 = 22 ; поэтому нужно найти число программ для преобразования 4 в 22  для нечётных чисел  для чётных чисел, таких, что N/2  4

Пример VIII:

Вариант 3

У исполнителя Удвоитель две команды, которым присвоены номера:

1. Прибавить 1 (увеличивает число на экране на 1)

2. Умножить на 2 (умножает его на 2)

Программа для исполнителя Удвоитель – это последовательность команд. Сколько существует программ , преобразующих число 4 в число 24 , предпоследней командой которых является команда « 1 » ?

Решение:

  • По условию, предпоследняя команда должна быть № 1, при этом последняя команда может быть любая – №1 или №2. Т.е. нужно получить количество всех программ вида « *11 » и « *12 », где звёздочка обозначает любые команды

2. если программа заканчивается на « 11 », то до выполнения цепочки « 11 » было число 24 – 1 – 1 = 22 ; поэтому нужно найти число программ для преобразования 4 в 22

для нечётных чисел

для чётных чисел, таких, что N/2 4

3. заполняем таблицу:  для нечётных чисел  для чётных чисел, таких, что N/2  4 N 4 5 1 6 1 7 1 8 1 9 2 10 2 11 3 12 3 4 13 14 4 15 5 16 5 17 7 18 7 9 19 20 9 12 21 22 12 15 4. теперь рассматриваем случай, когда программа заканчивается на « 12 », это значит, что до выполнения цепочки « 12 » у нас было число ( 24/ 2) – 1 = 11 ; поэтому нужно найти число программ для преобразования 4 в 11 , берём его из таблицы: 3 5. ответ к задаче – сумма двух значений, выделенных жёлтым маркером: 15 + 3 = 18 , поскольку мы рассмотрели все варианты программ, в которых предпоследняя команда №1 Ответ: 18

3. заполняем таблицу:

для нечётных чисел

для чётных чисел, таких, что N/2 4

N

4

5

1

6

1

7

1

8

1

9

2

10

2

11

3

12

3

4

13

14

4

15

5

16

5

17

7

18

7

9

19

20

9

12

21

22

12

15

4. теперь рассматриваем случай, когда программа заканчивается на « 12 », это значит, что до выполнения цепочки « 12 » у нас было число ( 24/ 2) – 1 = 11 ; поэтому нужно найти число программ для преобразования 4 в 11 , берём его из таблицы: 3

5. ответ к задаче – сумма двух значений, выделенных жёлтым маркером: 15 + 3 = 18 , поскольку мы рассмотрели все варианты программ, в которых предпоследняя команда №1

Ответ: 18

ДЕМО-2017: Исполнитель А16 преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавить 1 2. Прибавить 2 3. Умножить на 2 Первая из них увеличивает число на экране на 1, вторая увеличивает его на 2, третья умножает его на 2. Программа для исполнителя А16 – это последовательность команд. Сколько существует таких программ, которые исходное число 3 преобразуют в число 12 и при этом траектория вычислений программы содержит число 10 ? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например , для программы 132 при исходном числе 7 траектория будет состоять из чисел 8, 16, 18. для нечётных чисел для чётных чисел N 3 K N 4 1 1 5 2 6 4 7 6 8 11 9 17 10 30 11 12 30 60 Ответ: 60

ДЕМО-2017:

Исполнитель А16 преобразует число, записанное на экране.

У исполнителя есть три команды, которым присвоены номера:

1. Прибавить 1

2. Прибавить 2

3. Умножить на 2

Первая из них увеличивает число на экране на 1, вторая увеличивает его на 2, третья умножает его на 2.

Программа для исполнителя А16 – это последовательность команд.

Сколько существует таких программ, которые исходное число 3

преобразуют в число 12 и при этом траектория вычислений программы содержит число 10 ?

Траектория вычислений программы – это последовательность результатов выполнения всех команд программы.

Например , для программы 132 при исходном числе 7 траектория будет состоять из чисел 8, 16, 18.

для нечётных чисел

для чётных чисел

N

3

K N

4

1

1

5

2

6

4

7

6

8

11

9

17

10

30

11

12

30

60

Ответ: 60


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!