<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419207&amp;view=findpost&amp;p=3834827</guid>
        <pubDate>Tue, 21 Jul 2020 19:44:45 +0000</pubDate>
        <title>ЕГЭ по информатике 2020, часть 1, № 22</title>
        <link>https://forum.sources.ru/index.php?showtopic=419207&amp;view=findpost&amp;p=3834827</link>
        <description><![CDATA[swf: <strong class='tag-b'>Решение.</strong><br>
Вначале разберёмся с командой умножения на 3, которой не было в задаче про лестницу. <br>
Её можно применить ровно один раз – получить 9 из 3. 3 * 4 = 12, перескакиваем через число 9, которое должно присутствовать в траектории. Запомним, что 9 можно получить из 3 1 способом с помощью команды 2.<br>
Получили задачу получения 14 из 3 с помощью команд +1 и +2, и чтобы в траектории была 9. Разделим эту задачу на две подзадачи.<br>
<br>
<strong class='tag-b'>Подзадача 1, получение числа 9 из числа 3</strong><br>
Задача совершенно аналогична задаче про лестницу. <br>
Только там мы начинали с пола (0-й ступеньки), а здесь начинаем с 3-й ступеньки.<br>
K(i) = K(i–2) + K(i–1), i &gt;= 6.<br>
K(4) = 1, K(5) = 2.<br>
<br>
Поэтому таблица выглядит так:<br>
<table class='post_table tag-table'><tr><th>K(4)</th><th>K(5)</th><th>K(6)</th><th>K(7)</th><th>K(8)</th><th>K(9)</th></tr><tr><th>1</th><th>2</th><th>3</th><th>5</th><th>8</th><th>13</th></tr></table> <br>
Итого 1 + 13 = 14 способов получения числа 9.<br>
<br>
<strong class='tag-b'>Подзадача 2, получение числа 14 из числа 9</strong><br>
Пусть мы уже находимся на 9-й ступеньке, неважно, как мы туда попали.<br>
К слову, это очень важное свойство нашей задачи&#33; Нам не нужно помнить, как мы попали в текущее состояние. Если бы это было не так (система имела последействие), то задачу нельзя было бы решать методом динамического программирования.<br>
K(i) = K(i–2) + K(i–1), i &gt;= 12.<br>
K(10) = 1, K(11) = 2.<br>
<br>
Таблица:<br>
<br>
<table class='post_table tag-table'><tr><th>K(10)</th><th>K(11)</th><th>K(12)</th><th>K(13)</th><th>K(14)</th></tr><tr><th>1</th><th>2</th><th>3</th><th>5</th><th>8</th></tr></table> <br>
Итого 8 способов набрать 14, начиная с 9 и используя команды +1 и +2.<br>
<br>
Теперь соединяем решения обеих подзадач в одно: с 3-й ступеньки попасть на 9-ю можно 14 способами, с 9-й ступеньки подняться на 14-ю можно 8 способами.<br>
Итого 14 * 8 = 112 способов (программ).<br>
<br>
Ответ: 112 .]]></description>
        <author>swf</author>
        <category>ПОМОЩЬ ШКОЛЬНИКАМ</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=419207&amp;view=findpost&amp;p=3834818</guid>
        <pubDate>Tue, 21 Jul 2020 17:38:28 +0000</pubDate>
        <title>ЕГЭ по информатике 2020, часть 1, № 22</title>
        <link>https://forum.sources.ru/index.php?showtopic=419207&amp;view=findpost&amp;p=3834818</link>
        <description><![CDATA[swf: ЕГЭ по информатике 2020, вариант Москва<br>
Часть 1, № 22<br>
Динамическое программирование<br>
Задание взято с сайта<br>
<a class='tag-url' href='http://kotolis.ru/realegeinf_2020' target='_blank'>http://kotolis.ru/realegeinf_2020</a><br>
<br>
<strong class='tag-b'>№ 22</strong><br>
<strong class='tag-b'>Условие.</strong><br>
У исполнителя есть три команды, которым присвоены номера:<br>
1.	Прибавить 1<br>
2.	Умножить на З<br>
3.	Прибавить 2<br>
Первая команда увеличивает число на экране на 1, вторая умножает его на 3, третья увеличивает на 2.<br>
Сколько существует программ, которые преобразуют исходное число 3 в число 14 и при этом траектория вычислении содержит число 9?<br>
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 132 при исходном числе 7 траектория будет состоять из чисел 8, 10,30.<br>
-------------------------------------<br>
<br>
Во первых строках хочу сказать:<br>
Господа школьники (репетиторы и прочие заинтересованные лица)&#33;<br>
<span class="tag-color tag-color-named" data-value="red" style="color: red">Читайте лекции Котова по динамическому программированию для школьников.</span><br>
Они есть в интернете, есть на этом форуме (в разделе Алгоритмы), <br>
вот они на яндекс-диске:<br>
<a class='tag-url' href='https://yadi.sk/i/dfL27HNQZhLiaw' target='_blank'>https://yadi.sk/i/dfL27HNQZhLiaw</a><br>
<br>
Далее всё изложение будет идти согласно этой прекрасной книге.<br>
По сути, возьмём решение Примера 1 на стр. 6 (задача про лестницу) и приспособим его к задаче №22. <br>
<br>
<strong class='tag-b'>Пример #1.</strong> <br>
Определить, сколькими различными способами можно подняться на 10-ю ступеньку лестницы, если за один шаг можно подниматься на следующую ступеньку или через одну. <br>
<br>
Пусть K(10)- количество способов подъема на 10 ступеньку. <br>
Определим подзадачу K(i) нашей задачи, как количество способов подъема на i-ю ступеньку. <br>
Исходя из условия задачи, на 10 ступеньку можно подняться непосредственно с 8-й и 9-й ступенек. <br>
Поэтому, если мы знаем количество способов подъема K(8) и K(9) на 8 и 9 ступеньки соответственно, то количество способов подъема на 10 ступеньку может быть определено как K(10) = K(8) + K(9). <br>
Аналогичное соотношение справедливо для любой ступеньки i, начиная с третьей, т.е. <br>
K(i) = K(i - 2) + K(i - 1).	<br>
Осталось определить значения K(1) и K(2), которые равны: K(1) = 1, K(2) = 2. <br>
<br>
Следовательно, для решения задачи достаточно одномерной таблицы с 10 - ю элементами, для которой необходимо последовательно вычислить значения элементов таблицы согласно приведенным выше рекуррентным соотношениям. Сделаем это посредством последовательных вычислений. <br>
K[1] := 1;<br>
K[2] := 2;<br>
For  i := 3 to 10   do<br>
 K[i] := K[i - 1] + K[i - 2] <br>
<br>
Протрассируем предложенный алгоритм, вычисляя элементы одномерного массива.<br>
Способ подняться на первую ступеньку - один (K(1) = 1), способов подняться на вторую ступеньку - 2 (K(2) = 2).<br>
Каждый элемент массива, начиная с третьего, получается как сумма двух предыдущих элементов (K(i) = K(i - 2) + K(i - 1)).<br>
<br>
<table class='post_table tag-table'><tr><th>K(1)</th><th>K(2)</th><th>K(3)</th><th>K(4)</th><th>K(5)</th><th>K(6)</th><th>K(7)</th><th>K(8)</th><th>K(9)</th><th>K(10)</th></tr><tr><th>1</th><th>2</th><th>3</th><th>5</th><th>8</th><th>13</th><th>21</th><th>34</th><th>55</th><th>89</th></tr></table><br>
Итого 89 способов подняться на 10-ю ступеньку, на каждом шаге добавляя либо +1, либо +2 ступеньки.]]></description>
        <author>swf</author>
        <category>ПОМОЩЬ ШКОЛЬНИКАМ</category>
      </item>
	
      </channel>
      </rss>
	