Как решать задания егэ по информатике. Онлайн тесты гиа по информатике

ЕГЭ по информатике не является обязательным испытанием для всех выпускников школ, но требуется для поступления в ряд технических ВУЗов. Данный экзамен сдается редко, поскольку высших учебных заведений, где он требуется, немного. Распространенный случай при поступлении на ряд специальностей в политехнических ВУЗах – возможность выбрать между физикой и информатикой. В такой ситуации, многие выбирают второе, поскольку физика обоснованно считается дисциплиной более сложной. Знание информатики пригодится не только для поступления, но и в процессе освоения специальности в высшем учебном заведении.


Главная особенность школьного предмета «Информатика» - небольшой объем, поэтому для качественной подготовки нужно меньше времени, чем для других предметов. Подготовиться «с нуля» возможно! Чтобы компенсировать небольшой объем материала, авторы вопросов и заданий предлагают испытуемым сложные задачи, задания, которые провоцируют ошибки, требуют качественного владения информацией и грамотного ее использования. В содержании экзамена присутствует значительное количество заданий, которые вплотную подходят к знанию математики, логики. Значительную часть составляет блок заданий на алгоритмизацию, задачи, программирование. Ознакомьтесь с
Все задания можно разделить на 2 блока – тестирование (задания на знания теории, требуется краткий ответ), развернутые задания. На первую часть рекомендуется тратить около полутора часов, на вторую – более двух. Выделите время на проверку ошибок и внесение ответов в бланк.
Чтобы научиться без проблем преодолевать преграды в виде сложных заданий, воспользуйтесь ресурсом «Решу ЕГЭ». Это отличная возможность проверить себя, закрепить знания, проанализировать собственные ошибки. Регулярное тестирование в онлайн режиме избавит от тревог и волнения по поводу нехватки времени. Задания тут, преимущественно, сложнее, чем на экзамене.


  • Рекомендуется внимательно ознакомиться с программой подготовки к ЕГЭ – это позволит сделать процесс повторения систематическим, и структурировано усваивать теорию.
  • На сегодняшний день разработано множество пособий для подготовки – используйте их для тренировки и изучения материала.
  • Научитесь решать задачи разных типов – это легче сделать при помощи репетитора. При наличии высокого уровня знаний, можно справиться и самостоятельно.
  • Решайте на время, когда вы освоили нужные данные и научились решению задач. В этом поможет онлайн-тестирование.
Что делать, если исходные знания – слабые?
  • Важно не упускать возможности для подготовки: курсы, школьное обучение, дистанционные курсы, репетиторство, самообразование. Очертите круг проблем, которые вызывают наибольшее число вопросов и трудностей.
  • Тренируйтесь в решении заданий – чем больше, тем лучше.
  • Правильно распределяйте время на работу с заданиями разного уровня сложности.
  • Найдите профессионального репетитора, который поможет заполнить проблемы в знаниях.

Какой язык программирования выбрать, на каких задачах стоит сосредоточиться и как распределить время на экзамене

Преподаёт информатику в Фоксфорде

Разные вузы требуют разные вступительные экзамены по IT-направлениям. Где-то нужно сдавать физику, где-то – информатику. К какому экзамену готовиться – решать вам, но стоит иметь в виду, что конкурс на специальности, где надо сдавать физику, обычно ниже, чем на специальностях, где требуется ЕГЭ по информатике, т.е. вероятность поступить «через физику» больше.

Зачем тогда сдавать ЕГЭ по информатике?

  • К нему быстрее и проще подготовиться, чем к физике.
  • Вы сможете выбирать из большего количества специальностей.
  • Вам будет легче учиться по выбранной специальности.

Что нужно знать о ЕГЭ по информатике

ЕГЭ по информатике состоит из двух частей. В первой части 23 задачи с кратким ответом, во второй – 4 задачи с развёрнутым ответом. В первой части экзамена 12 заданий базового уровня, 10 заданий повышенного уровня и 1 задание высокого уровня. Во второй части – 1 задание повышенного уровня и 3 – высокого.

Решение задач из первой части позволяет набрать 23 первичных балла – по одному баллу за выполненное задание. Решение задач второй части добавляет 12 первичных баллов (3, 2, 3 и 4 балла за каждую задачу соответственно). Таким образом, максимум первичных баллов, которые можно получить за решение всех заданий – 35.

Первичные баллы переводятся в тестовые, которые и являются результатом ЕГЭ. 35 первичных баллов = 100 тестовым баллам за экзамен. При этом за решение задач из второй части экзамена начисляется больше тестовых баллов, чем за ответы на задачи первой части. Каждый первичный балл, полученный за вторую часть ЕГЭ, даст вам 3 или 4 тестовых балла, что в сумме составляет около 40 итоговых баллов за экзамен.

Это означает, что при выполнении ЕГЭ по информатике необходимо уделить особое внимание решению задач с развёрнутым ответом: №24, 25, 26 и 27. Их успешное выполнение позволит набрать больше итоговых баллов. Но и цена ошибки во время их выполнения выше – потеря каждого первичного балла чревата тем, что вы не пройдёте по конкурсу, ведь 3-4 итоговых балла за ЕГЭ при высокой конкуренции на IT-специальности могут стать решающими.

Как готовиться к решению задач из первой части

  • Уделите особое внимание задачам № 9, 10, 11, 12, 15, 18, 20, 23. Именно эти задачи, согласно анализу результатов прошлых лет, особенно сложны. Трудности с решением этих задач испытывают не только те, у кого общий балл за ЕГЭ по информатике получился низким, но и «хорошисты», и «отличники».
  • Выучите наизусть таблицу степеней числа 2.
  • Помните о том, что Кбайты в задачах означают кибибайты, а не килобайты. 1 кибибайт = 1024 байта. Это поможет избежать ошибок при вычислениях.
  • Тщательно изучите варианты ЕГЭ предыдущих лет. Экзамен по информатике - один из самых стабильных, это означает, что для подготовки можно смело использовать варианты ЕГЭ за последние 3-4 года.
  • Познакомьтесь с разными вариантами формулировки заданий. Помните о том, что незначительное изменение формулировки всегда приводят к ухудшению результатов экзамена.
  • Внимательно читайте условие задачи. Большинство ошибок при выполнении заданий связано с неверным пониманием условия.
  • Учитесь самостоятельно проверять выполненные задания и находить ошибки в ответах.

Что нужно знать о решении задач с развёрнутым ответом

24 задача - на поиск ошибки

25 задача требует составления простой программы

26 задача - на теорию игр

27 задача - необходимо запрограммировать сложную программу

Основную трудность на экзамене представляет 27 задача. Ее решает только 60-70% пишущих ЕГЭ по информатике. Ее особенность заключается в том, что к ней невозможно подготовиться заранее. Каждый год на экзамен выносится принципиально новая задача. При решении задачи №27 нельзя допустить ни одной смысловой ошибки.

Как рассчитывать время на экзамене

Ориентируйтесь на данные, которые приведены в спецификации контрольных измерительных материалов для проведения ЕГЭ по информатике. В ней указано примерное время, отведенное на выполнение заданий первой и второй части экзамена.

ЕГЭ по информатике длится 235 минут

Из них 90 минут отводится на решение задач из первой части. В среднем на каждую задачу из первой части уходит от 3 до 5 минут. На решение задачи №23 требуется 10 минут.

Остается 145 минут на решение заданий второй части экзамена, при этом для решения последней задачи №27 понадобится не менее 55 минут. Эти расчеты выполнены специалистами Федерального института педагогических измерений и основаны на результатах экзаменов прошлых лет, поэтому к ним следует отнестись серьезно и использовать в качестве ориентира на экзамене.

Языки программирования – какой выбрать

  1. BASIC. Это устаревший язык, и хотя его до сих пор изучают в школах, тратить время на его освоение уже нет смысла.
  2. Школьный алгоритмический язык программирования. Он разработан специально для раннего обучения программированию, удобен для освоения начальных алгоритмов, но практически не содержит глубины, в нем некуда развиваться.
  3. Pascal. По-прежнему является одним из самых распространённых языков программирования для обучения в школах и вузах, но и его возможности сильно ограничены. Pascal вполне подходит в качестве языка написания ЕГЭ.
  4. С++. Универсальный язык, один из самых быстрых языков программирования. На нём сложно учиться, зато в практическом применении его возможности очень широки.
  5. Python . Его легко изучать на начальном уровне, единственное, что требуется – знание английского языка. Вместе с тем, при углубленном изучении Python предоставляет программисту не меньше возможностей, чем С++. Начав изучение «Питона» ещё в школе, вы будете использовать его и в дальнейшем, вам не придётся переучиваться на другой язык, чтобы достичь новых горизонтов в программировании. Для сдачи ЕГЭ достаточно знать «Питон» на базовом уровне.

Полезно знать

  • Работы по информатике оценивают два эксперта. Если результаты оценки экспертов расходятся на 1 балл, выставляется больший из двух баллов. Если расхождение 2 балла и более – работу перепроверяет третий эксперт.
  • Полезный сайт для подготовки к ЕГЭ по информатике –

С современным миром технологий и реалий программирования, разработки ЕГЭ по информатике имеет мало общего. Какие-то базовые моменты есть, но даже если разбираешься немного в задачах, то это еще не значит, что в конечном итоге станешь хорошим разработчиком. Зато областей, где нужны IT-специалисты, великое множество. Вы нисколько не прогадаете, если хотите иметь стабильный заработок выше среднего. В IT вы это получите. При условии, разумеется, наличия соответствующих способностей. А развиваться и расти здесь можно сколько угодно, ведь рынок настолько огромен, что даже представить себе не можете! Причем он не ограничивается только нашим государством. Работайте на какую угодно компанию из любой точки мира! Это все очень вдохновляет, поэтому пусть подготовка к ЕГЭ по информатике будет первым незначительным шагом, после которого последуют годы саморазвития и совершенствования в данной области.

Структура

Часть 1 содержит 23 задания с кратким ответом. В этой части собраны задания с кратким ответом, подразумевающие самостоятельное формулирование последовательности символов. Задания проверяют материал всех тематических блоков. 12 заданий относятся к базовому уровню, 10 заданий к повышенному уровню сложности, 1 задание – к высокому уровню сложности.

Часть 2 содержит 4 задания, первое из которых повышенного уровня сложности, остальные 3 задания высокого уровня сложности. Задания этой части подразумевают запись развернутого ответа в произвольной форме.

На выполнение экзаменационной работы отводится 3 часа 55 минут (235 минут). На выполнение заданий части 1 рекомендуется отводить 1,5 часа (90 минут). Остальное время рекомендуется отводить на выполнение заданий части 2.

Пояснения к оцениванию заданий

Выполнение каждого задания части 1 оценивается в 1 балл. Задание части 1 считается выполненным, если экзаменуемый дал ответ, соответствующий коду верного ответа. Выполнение заданий части 2 оценивается от 0 до 4 баллов. Ответы на задания части 2 проверяются и оцениваются экспертами. Максимальное количество баллов, которое можно получить за выполнение заданий части 2, – 12.

Решение ЕГЭ информатика

1. Задание. Сколько единиц в двоичной записи шеснадцатеричного числа 12F0 16 ?

Пояснение.

Переведем число 12F0 16 в двоичную систему счисления: 12F0 16 = 1001011110000 2 .

Подсчитаем количество единиц: их 6.

Ответ: 6.

2. Задание Логическая функция F задаётся выражением (¬ z ) ∧ x ∨ x ∧ y . Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных x, y, z.

Перем. 1

Перем. 2

Перем. 3

Функция

В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала – буква, соответствующая 1-му столбцу; затем – буква, соответствующая 2-му столбцу; затем – буква, соответствующая 3-му столбцу). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно. Пример. Пусть задано выражение x → y , зависящее от двух переменных x и y , и таблица истинности:

Перем. 1

Перем. 2

Функция

Тогда 1-му столбцу соответствует переменная y , а 2-му столбцу соответствует переменная x . В ответе нужно написать: yx .

Пояснение.

Данное выражение является дизъюнкцией двух конъюнкций. Можем заметить, что в обоих слагаемых есть множитель x . Т. е. при x = 0 сумма будет равна 0. Так, для переменной x подходит только третий столбец.

В восьмой строке таблицы x = 1, а значение функции равно 0. Такое возможно только при z = 1, у = 0, т. е. переменная1 − z , а переменная2 − y .

Ответ: zyx .

3. Задание На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содержатся сведения о длинах этих дорог (в километрах).

Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова длина дороги из пункта В в пункт Е. В ответе запишите целое число – так, как оно указано в таблице.

Пояснение.

Пункт В − единственный пункт с пятью дорогами, значит ему соответствует П6, а пункт Е − единственный с четырьмя дорогами, значит ему соответствует П4.

Длина дороги из П6 в П4 равна 20.

Ответ: 20.

4. Задание В фрагменте базы данных представлены сведения о родственных отношениях. На основании приведённых данных определите, сколько прямых потомков (т.е. детей и внуков) Павленко А.К. упомянуты в таблице 1.

Таблица 1

Фамилия_И.О.

Пол

2146

Кривич Л. П.

2155

Павленко А. К.

2431

Хитрук П. А.

2480

Кривич А. А.

2302

Павленко Е. А.

2500

Сокол Н. А.

3002

Павленко И. А.

2523

Павленко Т. Х.

2529

Хитрук А. П.

2570

Павленко П. И.

2586

Павленко Т. И.

2933

Симонян А. А.

2511

Сокол В. А.

3193

Биба С. А.

Таблица 2

ID_Родителя

ID_Ребенка

2146

2302

2146

3002

2155

2302

2155

3002

2302

2431

2302

2511

2302

3193

3002

2586

3002

2570

2523

2586

2523

2570

2529

2431

2529

2511

2529

3193

ИЛИ

Для групповых операций с файлами используются маски имён файлов. Маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов, в которых также могут встречаться следующие символы:

Символ «?» (вопросительный знак) означает ровно один произвольный символ.

Символ «*» (звездочка) означает любую последовательность символов произвольной длины, в том числе «*» может задавать и пустую последовательность.

В каталоге находится 6 файлов:

maveric.map

maveric.mp3

taverna.mp4

revolver.mp4

vera.mp3

zveri.mp3

Ниже представлено восемь масок. Сколько из них таких, которым соответствуют ровно четыре файла из данного каталога?

*ver*.mp*

*?ver?*.mp?

?*ver*.mp?*

*v*r*?.m?p*

???*???.mp*

???*???.m*

*a*.*a*

*a*.*p*

Пояснение.

Из таблицы 2 видим, что у Павленко А. К.(ID 2155) два ребенка, их ID: 2302 и 3002.

У Павленко Е. А.(ID 2302) трое детей, а у Павленко И. А.(ID 3002) двое.

Таким образом, у Павленко А. К. семеро прямых потомков: два ребенка и пять внуков.

Ответ: 7.

ИЛИ

Рассмотрим каждую маску:

1. По маске *ver*.mp* будет отобрано пять файлов:

maveric.mp3

taverna.mp4

revolver.mp4

vera.mp3

zveri.mp3

2. По маске *?ver?*.mp? будет отобрано три файла:

maveric.mp3

taverna.mp4

zveri.mp3

3. По маске?*ver*.mp?* будет отобрано четыре файла:

maveric.mp3

taverna.mp4

revolver.mp4

zveri.mp3

4. По маске *v*r*?.m?p* будет отобран один файл:

maveric.map

5. По маске???*???.mp* будет отобрано три файла:

maveric.mp3

taverna.mp4

revolver.mp4

6. По маске???*???.m* будет отобрано четыре файла:

maveric.map

maveric.mp3

taverna.mp4

revolver.mp4

7. По маске *a*.*a* будет отобран один файл:

maveric.map

8. По маске *a*.*p* будет отобрано четыре файла:

maveric.map

maveric.mp3

taverna.mp4

vera.mp3

То есть три маски, которым соответствуют ровно четыре файла из данного каталога.

Ответ: 3.

Ответ: 7|3

5. Задание По каналу связи передаются сообщения, содержащие только четыре буквы: П, О, С, Т; для передачи используется двоичный код, допускающий однозначное декодирование. Для букв Т, О, П используются такие кодовые слова: Т: 111, О: 0, П: 100.

Укажите кратчайшее кодовое слово для буквы С, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением.

Пояснение.

Буква С не может кодироваться как 0, так как 0 уже занят.

Буква С не может кодироваться как 1, так как кодирование буквы Т начинается с 1.

Буква С не может кодироваться как 10, так как кодирование буквы П начинается с 10.

Буква С не может кодироваться как 11, так как кодирование буквы Т начинается с 11.

Буква С может кодироваться как 101 − это наименьшее возможное значение.

Ответ: 101.

6. Задание На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. К этой записи дописываются справа ещё два разряда по следующему правилу:

А) складываются все цифры двоичной записи, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;

Б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы цифр на 2.

Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.

Укажите такое наименьшее число N, для которого результат работы алгоритма больше 125. В ответе это число запишите в десятичной системе счисления.

ИЛИ

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

1. прибавь 2,

2. умножь на 5.

Выполняя первую из них, Калькулятор прибавляет к числу на экране 2, а выполняя вторую, умножает его на 5.

Например, программа 2121 – это программа

умножь на 5,

прибавь 2,

умножь на 5,

прибавь 2,

которая преобразует число 1 в число 37.

Запишите порядок команд в программе, которая преобразует число 2 в число 24 и содержит не более четырёх команд. Указывайте лишь номера команд.

Пояснение.

Данный алгоритм приписывает в конце числа или 10, если изначально в его двоичной записи было нечетное количество единиц, или 00 если четное.

126 10 = 1111110 2 может получиться в результате работы алгоритма из числа 11111 2 .

11111 2 = 31 10 .

Ответ: 31.

ИЛИ

Решим задачу от обратного, а потом запишем полученные команды справа налево.

Если число не делится на 5, тогда получено через команду 1, если делится, то через команду 2.

22 + 2 = 24(команда 1)

20 + 2 = 22(команда 1)

4 * 5 = 20(команда 2)

2 + 2 = 4(команда 1)

Ответ: 1211.

Ответ: 31|1211

7. Задание. Дан фрагмент электронной таблицы. Из ячейки E4 в ячейку D3 была скопирована формула. При копировании адреса ячеек в формуле автоматически изменились. Каким стало числовое значение формулы в ячейке D3?

=$B2 * C$3

Примечание: знак $ обозначает абсолютную адресацию.

ИЛИ

Дан фрагмент электронной таблицы.

=(A1-3)/(B1-1)

=(A1-3)/(C1-5)

C1/(A1 – 3)

Какое целое число должно быть записано в ячейке A1, чтобы диаграмма, построенная по значениям ячеек диапазона A2:С2, соответствовала рисунку? Известно, что все значения ячеек из рассматриваемого диапазона неотрицательны.

Пояснение.

Формула, при копировании в ячейку D3 изменилась на =$B1 * B$3.

B1 * B3 = 4 * 2 = 8.

Ответ: 8.

ИЛИ

Подставим значения B1 и C1 в формулы A2:C2:

A2 = (A1-3)/5

B2 = (A1-3)/5

C2 = 10/(A1-3)

Так как A2 = B2, то С2 = 2 * A2 = 2 * B2

Подставим:

10/(A1-3) = 2*(A1-3)/5

A1 - 3 = 5

A1 = 8.

Ответ: 8.

8. Задание Запишите число, которое будет напечатано в результате выполнения следующей программы. Для Вашего удобства программа представлена на пяти языках программирования.

Бейсик

Python

DIM S, N AS INTEGER

S = 0

N = 0

WHILE S

S = S + 8

N = N + 2

WEND

PRINT N

s = 0

n = 0

while s

s = s + 8

n = n + 2

print(n)

Алгоритмический язык

Паскаль

алг

нач

цел n, s

n:= 0

s:= 0

нц пока s

s:= s + 8

n:= n + 2

кц

вывод n

кон

var s, n: integer;

begin

s:= 0;

n:= 0;

while s

begin

s:= s + 8;

n:= n + 2

end;

writeln(n)

end.

Си

#include

int main()

{ int s = 0, n = 0;

while (s

printf("%d\n", n);

return 0;

Пояснение.

Цикл while выполняется до тех пор, пока истинно условие s

Ответ: 28.

9. Задание. Какой минимальный объём памяти (в Кбайт) нужно зарезервировать, чтобы можно было сохранить любое растровое изображение размером 64×64 пикселов при условии, что в изображении могут использоваться 256 различных цветов? В ответе запишите только целое число, единицу измерения писать не нужно.

ИЛИ

Музыкальный фрагмент был записан в формате моно, оцифрован и сохранён в виде файла без использования сжатия данных. Размер полученного файла – 24 Мбайт. Затем тот же музыкальный фрагмент был записан повторно в формате стерео (двухканальная запись) и оцифрован с разрешением в 4 раза выше и частотой дискретизации в 1,5 раза меньше, чем в первый раз. Сжатие данных не производилось. Укажите размер файла в Мбайт, полученного при повторной записи. В ответе запишите только целое число, единицу измерения писать не нужно.

Пояснение.

Один пиксель кодируется 8 битами памяти.

Всего 64 * 64 = 2 12 пикселей.

Объем памяти, занимаемый изображением 2 12 * 8 = 2 15 бит = 2 12 байт = 4 Кбайт.

Ответ: 4.

ИЛИ

При записи того же файла в стерео формате его объем увеличивается в 2 раза. 24 * 2 = 48

При увеличении его разрешения в 4 раза его объем также увеличивается в 4 раза. 48 * 4 = 192

При уменьшении частоты дискретизации в 1,5 раза его объем уменьшается в 1,5 раза. 192 / 1,5 = 128.

Ответ: 128.

Ответ: 4|128

10. Задание Игорь составляет таблицу кодовых слов для передачи сообщений, каждому сообщению соответствует своё кодовое слово. В качестве кодовых слов Игорь использует 5-буквенные слова, в которых есть только буквы П, И, Р, причём буква П появляется ровно 1 раз. Каждая из других допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем. Сколько различных кодовых слов может использовать Игорь?

Пояснение.

Игорь может составить 2 4 слов поставив букву П на первое место. Аналогично можно поставить ее на второе, третье, четвертое и пятое место. Получим 5 * 2 4 = 80 слов.

Ответ: 80.

11. Задание Ниже на пяти языках программирования записаны две рекурсивные функции (процедуры): F и G.

Бейсик

Python

DECLARE SUB F(n)

DECLARE SUB G(n)

SUB F(n)

IF n > 0 THEN G(n - 1)

END SUB

SUB G(n)

PRINT "*"

IF n > 1 THEN F(n - 3)

END SUB

def F(n):

If n > 0:

G(n - 1)

def G(n):

Print("*")

If n > 1:

F(n - 3)

Алгоритмический язык

Паскаль

алг F(цел n)

нач

Если n > 0 то

G(n - 1)

Все

кон

алг G(цел n)

нач

Вывод "*"

Если n > 1 то

F(n - 3)

Все

кон

procedure F(n: integer); forward;

procedure G(n: integer); forward;

procedure F(n: integer);

begin

If n > 0 then

G(n - 1);

end;

procedure G(n: integer);

begin

Writeln("*");

If n > 1 then

F(n - 3);

end;

Си

void F(int n);

void G(int n);

void F(int n){

If (n > 0)

G(n - 1);

void G(int n){

Printf("*");

If (n > 1)

F(n - 3);

Сколько символов «звёздочка» будет напечатано на экране при выполнении вызова F(11)?

Пояснение.

Промоделируем работу программы:

F(11)

G(10): *

F(7)

G(6): *

F(3)

G(2): *

F(-1)

Ответ: 3.

12. Задание В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, – в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда – нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.

Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.

Для узла с IP-адресом 111.81.208.27 адрес сети равен 111.81.192.0. Чему равно наименьшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.

Пояснение.

Запишем третий байт IP-адреса и адреса сети в двоичной системе счисления:

208 10 = 11010000 2

192 10 = 11000000 2

Видим, что два первых слева бита маски − единицы, значит, чтобы значение было наименьшим, остальные биты должны быть нулями. Получаем, что третий слева байт маски равен 11000000 2 = 192 10

Ответ: 192.

13. Задание При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 15 символов и содержащий только символы из 12-символьного набора: А, В, C, D, Е, F, G, H, K, L, M, N. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт; это число одно и то же для всех пользователей. Для хранения сведений о 20 пользователях потребовалось 400 байт. Сколько байт выделено для хранения дополнительных сведений об одном пользователе? В ответе запишите только целое число – количество байт.

Пояснение.

Согласно условию, в номере могут быть использованы 12 букв. Известно, что с помощью N бит можно закодировать 2N различных вариантов. Поскольку 2 3 4 , то для записи каждого из 12 символов необходимо 4 бита.

Для хранения всех 15 символов пароля нужно 4 · 15 = 60 бит, а т. к. для записи используется целое число байт, то берём ближайшее не меньшее значение, кратное восьми, это число 64 = 8 · 8 бит (8 байт).

Пусть количество памяти, отведенное под дополнительные седения равно x , тогда:

20 * (8+ x ) = 400

x = 12

Ответ: 12.

14. Задание Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

А) заменить (v, w).

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды

заменить (111, 27)

преобразует строку 05111150 в строку 0527150. Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.

Б) нашлось (v).

Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка

исполнителя при этом не изменяется.

Цикл

ПОКА условие

Последовательность команд

КОНЕЦ ПОКА

Выполняется, пока условие истинно.

В конструкции

ЕСЛИ условие

ТО команда1

ИНАЧЕ команда2

КОНЕЦ ЕСЛИ

Выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

Какая строка получится в результате применения приведённой ниже

программы к строке, состоящей из 68 идущих подряд цифр 8? В ответе

запишите полученную строку.

НАЧАЛО

ПОКА нашлось (222) ИЛИ нашлось (888)

ЕСЛИ нашлось (222)

ТО заменить (222, 8)

ИНАЧЕ заменить (888, 2)

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

Пояснение.

В 68 идущих подряд цифрах 8 22 группы по три восьмерки, которые заменятся на 22 двойки и останутся две восьмерки.

68(8) = 22(2) + 2(8)

22(2) + 2(8) = 1(2) + 9(8)

1(2) + 9(8) = 4(2)

4(2) = 1(2) + 1(8) = 28

Ответ: 28.

15. Задание рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М.

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

Сколько существует различных путей из города А в город М?

Пояснение.

Начнем считать количество путей с конца маршрута - с города М. Пусть N X - количество различных путей из города А в город X, N - общее число путей. В город М можно приехать из Л или K, поэтому N = N М = N Л + N К . (*)

Аналогично:

N К = N И ;

N Л = N И ;

N И = N Е + N Ж + N З

N К = N Е = 1.

Добавим еще вершины:

N Б = N A = 1;

N В = N Б + N А + N Г = 1 + 1 + 1 = 3;

N Е = N Г = 1;

N Г = N A = 1.

Подставим в формулу (*): N = N M = 4 + 4 + 4 + 1 = 13.

Ответ: 13.

Ответ: 56

16. Задание Значение арифметического выражения: 9 8 + 3 5 – 9 – записали в систем счисления с основанием 3. Сколько цифр «2» содержится в этой записи?

Пояснение.

Преобразуем выражение:

(3 2 ) 8 + 3 5 - 3 2

3 16 + 3 5 - 3 2

3 16 + 3 5 = 100...00100000

100...00100000 - 3 2 = 100...00022200

В полученном числе три двойки.

Ответ: 3

17. Задание В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для обозначения логической операции «И» – символ «&». В таблице приведены запросы и количество найденных по ним страниц некоторого сегмента сети Интернет.

Какое количество страниц (в тысячах) будет найдено по запросу Гомер & Одиссея & Илиада? Считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время

выполнения запросов.

Пояснение.

Количество запросов в данной области будем обозначать Ni. Наша цель - N5.

Тогда из таблицы находим, что:

N5 + N6 = 355,

N4 + N5 = 200,

N4 + N5 + N6 = 470.

Из первого и второго уравнения: N4 + 2N5 + N6 = 555.

Из последнего уравнения: N5 = 85.

Ответ: 85

18. Задание Обозначим через m&n поразрядную конъюнкцию неотрицательных целых чисел m и n . Так, например, 14&5 = 1110 2 &0101 2 = 0100 2 = 4.

Для какого наименьшего неотрицательного целого числа А формула

x&25 ≠ 0 → (x&17 = 0 → x&А ≠ 0)

тождественно истинна (т.е. принимает значение 1 при любом неотрицательном целом значении переменной х )?

Пояснение.

Введем обозначения:

(x ∈ А) ≡ A; (x ∈ P) ≡ P; (x ∈ Q) ≡ Q.

Преобразовав, получаем:

¬P ∨ ¬(Q ∧ ¬A) ∨ ¬P = ¬P ∨ ¬Q ∨ A.

Логическое ИЛИ истинно, если истинно хотя бы одно утверждение. Условию ¬P ∨ ¬Q = 1 удовлетворяют лучи (−∞, 40) и (60, ∞). Поскольку выражение ¬P ∨ ¬Q ∨ A должно быть тождественно истинным, выражение A должно быть истинно на отрезке . Его длина равна 20.

Ответ: 20.

Ответ: 8

19. Задание В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 4, 7, 3, 8, 5, 0, 1, 2, 9, 6 соответственно, т.е. A = 4, A = 7 и т.д.

Определите значение переменной c после выполнения следующего фрагмента этой программы (записанного ниже на пяти языках программирования) .

Бейсик

Python

C = 0

FOR i = 1 TO 9

IF A(i)

C = c + 1

T = A(i)

A(i) = A(0)

A(0) = t

ENDIF

NEXT i

C = 0

For i in range(1,10):

If A[i]

C = c + 1

t = A[i]

A[i] = A

A = t

Алгоритмический язык

Паскаль

c:= 0

нц для i от 1 до 9

если A[i]

c:= c + 1

t:= A[i]

A[i] := A

A := t

все

кц

c:= 0;

for i:= 1 to 9 do

if A[i]

begin

c:= c + 1;

t:= A[i];

A[i] := A;

A := t;

end;

Си

c = 0;

for (i = 1;i

if (A[i]

{

c++;

t = A[i];

A[i] = A;

A = t;

}

Пояснение.

Если A[i] элемент массива меньше A, то программа меняет их местами и увеличивает значение переменной c на 1. Программа выполнится дважды, первый раз поменяв местами A и A, так как 3 с станет равно 2.

Ответ: 2.

20. Задание Ниже на пяти языках программирования записан алгоритм. Получив на вход число x , этот алгоритм печатает число M . Известно, что x > 100. Укажите наименьшее такое (т.е. большее 100) число x , при вводе которого алгоритм печатает 26.

Бейсик

Python

DIM X, L, M AS INTEGER

INPUT X

L = X

M = 65

IF L MOD 2 = 0 THEN

M = 52

ENDIF

WHILE L M

IF L > M THEN

L = L – M

ELSE

M = M – L

ENDIF

WEND

PRINT M

x = int(input())

L = x

M = 65

if L % 2 == 0:

M = 52

while L != M:

if L > M:

L = L - M

else:

M = M - L

print(M)

Алгоритмический язык

Паскаль

алг

нач

цел x, L, M

ввод x

L:= x

M:= 65

если mod(L,2)=0

то

M:= 52

все

нц пока L M

если L > M

то

L:= L – M

иначе

M:= M – L

все

кц

вывод M

кон

var x, L, M: integer;

begin

readln(x);

L:= x;

M:= 65;

if L mod 2 = 0 then

M:= 52;

while L M do

if L > M then

L:= L - M

else

M:= M – L;

writeln(M);

end.

Си

#include

void main()

{

int x, L, M;

scanf("%d", &x);

L = x;

M = 65;

if (L % 2 == 0)

M = 52;

while (L != M){

if(L > M)

L = L - M;

else

M = M - L;

}

printf("%d", M);

}

Пояснение.

В теле цикла числа M и L уменьшаются, пока не станут равными. Чтобы в итоге было напечатано 26, оба числа в какой-то момент должны быть равны 26. Пойдем от конца к началу: на предыдущем шаге одно число было 26, а другое 26 + 26 = 52. Еще на шаг раньше 52 + 26 = 78 и 52. До того 78 + 52 = 130 и 52. То есть наименьшее возможное число 130. А поскольку найденное число четное, то M будет присвоено значение 52, что и приведет к необходимому результату.

Ответ: 130.

21. Задание Напишите в ответе наименьшее значение входной переменной k , при котором программа выдаёт тот же ответ, что и при входном значении k = 10. Для Вашего удобства программа приведена на пяти языках программирования.

Бейсик

Python

DIM K, I AS LONG

INPUT K

I = 1

WHILE F(I)

I = I + 1

WEND

PRINT I

FUNCTION F(N)

F = N * N * N

END FUNCTION

FUNCTION G(N)

G = 2*N + 3

END FUNCTION

def f(n):

return n*n*n

def g(n):

return 2*n+3

k = int(input())

i = 1

while f(i)

i+=1

print (i)

Алгоритмический язык

Паскаль

алг

нач

цел i, k

ввод k

i:= 1

нц пока f(i)

i:= i + 1

кц

вывод i

кон

алг цел f(цел n)

нач

знач:= n * n * n

кон

алг цел g(цел n)

нач

знач:= 2*n + 3

кон

var

k, i: longint;

function f(n: longint): longint;

begin

f:= n * n * n;

end;

function g(n: longint): longint;

begin

g:= 2*n + 3;

end;

begin

readln(k);

i:= 1;

while f(i)

i:= i+1;

writeln(i)

end.

Си

#include

long f(long n) {

return n * n * n;

}

long g(long n) {

return 2*n + 3;

}

int main()

{

long k, i;

scanf("%ld", &k);

i = 1;

while(f(i)

i++;

printf("%ld", i);

return 0;

}

Пояснение.

Данная программа сравнивает и и прибавляет к i единицу до тех пор, пока . И выводит первое значение переменной i при котором

При k = 10, программа выведет число 3.

Запишем неравенство: отсюда получим, что наименьшее значение k = 3.

Ответ: 3.

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

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

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

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

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

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

Пояснение.

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

Все команды увеличивают исходное число, поэтому количество команд не может превосходить (30 − 21) = 9. При этом минимальное количество команд - 3.

Таким образом, команд может быть 3, 4, 5, 6, 7, 8 или 9. Поэтому порядок команд не имеет значения, каждому числу команд соответствует один набор команд, которые можно расположить в любом порядке.

Рассмотрим все возможные наборы и вычислим количество вариантов рассположения команд в них. Набор 133 имеет 3 возможных вариантов расположения. Набор 1223 - 12 возможных вариантов расположения: это число перестановок с повторениями (1+2+1)!/(1! · 2! · 1!)). Набор 12222 - 5 вариантов. Набор 111222 - 20 возможных вариантов. Набор 11123 - 20 вариантов. Набор 111113 - 6 вариантов, набор 1111122 - 21 вариант, набор 11111112 - 8 вариантов, набор 111111111 - один вариант.

Всего имеем 3 + 12 + 5 + 20 + 20 + 6 + 21 + 8 + 1 = 96 программ.

Ответ: 96.

Ответ: 96.

Ответ: 13

23. Задание Сколько существует различных наборов значений логических переменных x 1 , x 2 , ... x 9 , y 1 , y 2 , ... y 9 , которые удовлетворяют всем перечисленным ниже условиям?

(¬ (x 1 y 1 )) ≡ (x 2 y 2 )

(¬ (x 2 y 2 )) ≡ (x 3 y 3 )

(¬ (x 8 y 8 )) ≡ (x 9 y 9 )

В ответе не нужно перечислять все различные наборы значений переменных x 1 , x 2 , ... x 9 , y 1 , y 2 , ... y 9 , при которых выполнена данная система равенств. В качестве ответа Вам нужно указать количество таких наборов.

Пояснение.

Из последнего уравнения находим, что возможны три варианта значений x8 и y8: 01, 00, 11. Построим древо вариантов для первой и второй пар значений.

Таким образом, имеем 16 наборов переменных.

Дерево вариантов для пары значений 11:

Получаем 45 вариантов. Таким образом, система будет иметь 45 + 16 = 61 различных наборов решений.

Ответ: 61.

Ответ: 1024

24. Задание На обработку поступает положительное целое число, не превышающее 10 9 . Нужно написать программу, которая выводит на экран сумму цифр этого числа, меньших 7. Если в числе нет цифр, меньших 7, требуется на экран вывести 0. Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.

Бейсик

Python

DIM N, DIGIT, SUM AS LONG

INPUT N

SUM = 0

WHILE N > 0

DIGIT = N MOD 10

IF DIGIT

SUM = SUM + 1

END IF

N = N \ 10

WEND

PRINT DIGIT

N = int(input())

sum = 0

while N > 0:

digit = N % 10

if digit

sum = sum + 1

N = N // 10

print(digit)

Алгоритмический язык

Паскаль

алг

нач

цел N, digit, sum

ввод N

sum:= 0

нц пока N > 0

digit:= mod(N,10)

если digit

sum:= sum + 1

все

N:= div(N,10)

кц

вывод digit

кон

var N, digit, sum: longint;

begin

readln(N);

sum:= 0;

while N > 0 do

begin

digit:= N mod 10;

if digit

sum:= sum + 1;

N:= N div 10;

end;

writeln(digit)

end.

Си

#include

int main()

{

int N, digit, sum;

scanf("%d", &N);

sum = 0;

while (N > 0)

{

digit = N % 10;

if (digit

sum = sum + 1;

N = N / 10;

}

printf("%d",digit);

return0;

}

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе числа 456.

2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.

3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:

1) выпишите строку, в которой сделана ошибка;

2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки.

Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.

Пояснение.

Решение использует запись программы на Паскале. Допускается использование программы на любом из четырёх других языков.

1. Программа выведет число 4.

2. Пример числа, при вводе которого программа выдаёт верный ответ: 835.

Замечание для проверяющего. Программа работает неправильно из-за неверной выводимой на экран переменной и неверного увеличения суммы. Соответственно, программа будет работать верно, если в числе старшая цифра (крайняя левая) равна сумме цифр, меньших 7.

3. В программе есть две ошибки.

Первая ошибка. Неверное увеличение суммы.

Строка с ошибкой:

sum:= sum + 1;

Верное исправление:

sum:= sum + digit;

Вторая ошибка. Неверный вывод ответа на экран.

Строка с ошибкой:

writeln(digit)

Верное исправление:

writeln(sum)

25. Задание Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от –10 000 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых хотя бы одно число делится на 3. В данной задаче под парой подразумевается два подряд идущих элемента массива. Например, для массива из пяти элементов: 6; 2; 9; –3; 6 – ответ: 4.

Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

Бейсик

Python

CONST N AS INTEGER = 20

DIM A (1 TO N) AS INTEGER

DIM I AS INTEGER,

J AS INTEGER,

K AS INTEGER

FOR I = 1 TO N

INPUT A(I)

NEXT I

...

END

# допускается также

# использовать две

# целочисленные переменные j и k

a =

n = 20

for i in range(0, n):

a.append(int(input()))

...

Алгоритмический язык

Паскаль

алг

нач

цел N = 20

целтаб a

цел i, j, k

нц для i от 1 до N

ввод a[i]

кц

...

кон

const

N = 20;

var

a: array of integer;

i, j, k: integer;

begin

for i:= 1 to N do

readln(a[i]);

...

end.

Си

Естественный язык

#include

#define N 20

int main() {

int a[N];

int i, j, k;

for (i = 0; i

scanf("%d", &a[i]);

...

return 0;

}

Объявляем массив A из 20 элементов.

Объявляем целочисленные переменные I, J, K.

В цикле от 1 до 20 вводим элементы массива A с 1-го по 20-й.

В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).

k:= k+1

все

кц

вывод k

Паскаль

k:= 0;

for i:= 1 to N-1 do

if (a[i] mod 3=0) or (a mod 3=0) then

inc(k);

writeln(k);

Си

k = 0;

for (i = 0; i

if (a[i]%3 == 0 || a%3 == 0)

k++;

printf("%d", k);

Естественный язык

Записываем в переменную K начальное значение, равное 0. В цикле от первого элемента до предпоследнего находим остаток от деления текущего и следующего элемента массива на 3. Если первый или второй из полученных остатков равен 0, увеличиваем переменную K на единицу. После завершения цикла выводим значение переменной K

26. Задание Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежат две кучи камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в одну из куч (по своему выбору) один камень или увеличить количество камней в куче в два раза. Например, пусть в одной куче 10 камней, а в другой 7 камней; такую позицию в игре будем обозначать (10, 7). Тогда за один ход можно получить любую из четырёх позиций: (11, 7), (20, 7), (10, 8), (10, 14). Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается в тот момент, когда суммарное количество камней в кучах становится не менее 73. Победителем считается игрок, сделавший последний ход, т.е. первым получивший такую позицию, что в кучах всего будет 73 камня или больше.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока – значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. Например, при начальных позициях (6, 34), (7, 33), (9, 32) выигрышная стратегия есть у Пети. Чтобы выиграть, ему достаточно удвоить количество камней во второй куче.

Задание 1. Для каждой из начальных позиций (6, 33), (8, 32) укажите, кто из игроков имеет выигрышную стратегию. В каждом случае опишите выигрышную стратегию; объясните, почему эта стратегия ведёт к выигрышу, и укажите, какое наибольшее количество ходов может потребоваться победителю для выигрыша при этой стратегии.

Задание 2. Для каждой из начальных позиций (6, 32), (7, 32), (8, 31) укажите, кто из игроков имеет выигрышную стратегию. В каждом случае опишите выигрышную стратегию; объясните, почему эта стратегия ведёт к выигрышу, и укажите, какое наибольшее количество ходов может потребоваться победителю для выигрыша при этой стратегии.

Задание 3. Для начальной позиции (7, 31) укажите, кто из игроков имеет выигрышную стратегию. Опишите выигрышную стратегию; объясните, почему эта стратегия ведёт к выигрышу, и укажите, какое наибольшее количество ходов может потребоваться победителю для выигрыша при этой стратегии. Постройте дерево всех партий, возможных при указанной Вами выигрышной стратегии. Представьте дерево в виде рисунка или таблицы.

(7,31)

Всего 38

(7,31+1)=(7,32)

Всего 39

(7+1,32)=(8,32)

Всего 40

(8+1,32)=(9,32)

Всего 41

(9,32*2)=(9,64)

Всего 73

(8,32+1)=(8,33)

Всего 41

(8,33*2)=(8,66)

Всего 74

(8*2,32)=(16,32)

Всего 48

(16,32*2)=(16,64)

Всего80

(8,32*2)=(8,64)

Всего 72

(8,64*2)=(8,128)

Всего 136

(7+1,31)=(8,31)

Всего 39

(8,31+1)=(8,32)

Всего 40

(8+1,32)=(9,32)

Всего 41

(9,32*2)=(9,64)

Всего 73

(8,32+1)=(8,33)

Всего41

(8,33*2)=(8,66)

Всего 74

(8*2,32)=(16,32)

Всего 48

(16,32*2)=(16,64)

Всего 80

(8,32*2)=(8,64)

Всего 72

(8,64*2)=(8,128)

Всего 136

(7*2,31)=(14,31)

Всего 45

(14,31*2)=(14,62)

Всего 76

(7,31*2)=(7,62)

Всего 69

(7,62*2)=(7,124)

Всего 131

Задание 1. В начальных позициях (6, 33), (8, 32) выигрышная стратегия есть у Вани. При начальной позиции (6, 33) после первого хода Пети может получиться одна из следующих четырёх позиций: (7, 33), (12, 33), (6, 34), (6, 66). Каждая из этих позиций содержит менее 73 камней. При этом из любой из этих позиций Ваня может получить позицию, содержащую не менее 73 камней, удвоив количество камней во второй куче. Для позиции (8, 32) после первого хода Пети может получиться одна из следующих четырёх позиций: (9, 32), (16, 32), (8, 33), (8, 64). Каждая из этих позиций содержит менее 73 камней. При этом из любой из этих позиций Ваня может получить позицию, содержащую не менее 73 камней, удвоив количество камней во второй куче. Таким образом, Ваня при любом ходе Пети

выигрывает своим первым ходом.

Задание 2. В начальных позициях (6, 32), (7, 32) и (8, 31) выигрышная стратегия есть у Пети. При начальной позиции (6, 32) он должен первым ходом получить позицию (6, 33), из начальных позиций (7, 32) и (8, 31). Петя после первого хода должен получить позицию (8, 32). Позиции (6, 33) и (8, 32) рассмотрены при разборе задания 1. В этих позициях выигрышная стратегия есть у игрока, который будет ходить вторым (теперь это Петя). Эта стратегия описана при разборе задания 1. Таким образом, Петя при любой игре Вани выигрывает своим вторым ходом.

Задание 3. В начальной позиции (7, 31) выигрышная стратегия есть у Вани. После первого хода Пети может возникнуть одна из четырёх позиций: (8, 31), (7, 32), (14, 31) и (7, 62). В позициях (14, 31) и (7, 62) Ваня может выиграть одним ходом, удвоив количество камней во второй куче. Позиции (8, 31) и (7, 32) были рассмотрены при разборе задания 2. В этих позициях у игрока, который должен сделать ход (теперь это Ваня), есть выигрышная стратегия. Эта стратегия описана при разборе задания 2. Таким образом, в зависимости от игры Пети Ваня выигрывает на первом или втором ходу.

27. Задание В физической лаборатории проводится долговременный эксперимент по изучению гравитационного поля Земли. По каналу связи каждую минуту в лабораторию передаётся положительное целое число – текущее показание прибора «Сигма 2015». Количество передаваемых чисел в серии известно и не превышает 10 000. Все числа не превышают 1000. Временем, в течение которого происходит передача, можно пренебречь.

Необходимо вычислить «бета-значение» серии показаний прибора – минимальное чётное произведение двух показаний, между моментами передачи которых прошло не менее 6 минут. Если получить такое произведение не удаётся, ответ считается равным –1.

Вам предлагается два задания, связанных с этой задачей: задание А и задание Б. Вы можете решать оба задания или одно из них по своему выбору. Итоговая оценка выставляется как максимальная из оценок за задания А и Б. Если решение одного из заданий не представлено, то считается, что оценка за это задание – 0 баллов. Задание Б является усложнённым вариантом задания А, оно содержит дополнительные требования к программе.

А. Напишите на любом языке программирования программу для решения поставленной задачи, в которой входные данные будут запоминаться в массиве, после чего будут проверены все возможные пары элементов. Перед программой укажите версию языка программирования.

ОБЯЗАТЕЛЬНО укажите, что программа является решением ЗАДАНИЯ А.

Максимальная оценка за выполнение задания А – 2 балла.

Б. Напишите программу для решения поставленной задачи, которая будет эффективна как по времени, так и по памяти (или хотя бы по одной из этих характеристик).

Программа считается эффективной по времени, если время работы

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

Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.

Перед программой укажите версию языка программирования и кратко опишите использованный алгоритм.

ОБЯЗАТЕЛЬНО укажите, что программа является решением ЗАДАНИЯ Б.

Максимальная оценка за правильную программу, эффективную по времени и по памяти, – 4 балла.

Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, – 3 балла. НАПОМИНАЕМ! Не забудьте указать, к какому заданию относится каждая из представленных Вами программ.

Входные данные представлены следующим образом. В первой строке задаётся число N – общее количество показаний прибора. Гарантируется, что N > 6. В каждой из следующих N строк задаётся одно положительное целое число – очередное показание прибора.

Пример входных данных:

11

12

45

5

3

17

23

21

20

19

18

17

Программа должна вывести одно число – описанное в условии произведение либо –1, если получить такое произведение не удаётся.

Пример выходных данных для приведённого выше примера входных данных:

54

Пояснение.

Задание Б (решение для задания А приведено ниже, см. программу 4). Чтобы произведение было чётным, хотя бы один сомножитель должен быть чётным, поэтому при поиске подходящих произведений чётные показания прибора можно рассматривать в паре с любыми другими, а нечётные – только с чётными.

Для каждого показания с номером k, начиная с k = 7, рассмотрим все допустимые по условиям задачи пары, в которых данное показание получено вторым. Минимальное произведение из всех этих пар будет получено, если первым в паре будет взято минимальное подходящее показание среди всех, полученных от начала приёма и до показания с номером k – 6. Если очередное показание чётное, минимальное среди предыдущих может быть любым, если нечётное – только чётным.

Для получения эффективного по времени решения нужно по мере ввода данных помнить абсолютное минимальное и минимальное чётное показание на каждый момент времени, каждое вновь полученное показание умножать на соответствующий ему минимум, имевшийся на 6 элементов ранее, и выбрать минимальное из всех таких произведений.

Поскольку каждое текущее минимальное показание используется после ввода ещё 6 элементов и после этого становится ненужным, достаточно хранить только 6 последних минимумов. Для этого можно использовать массив из 6 элементов и циклически заполнять его по мере ввода данных. Размер этого массива не зависит от общего количества введённых показаний, поэтому такое решение будет эффективным не только по времени, но и по памяти. Чтобы хранить абсолютный и чётный минимумы, нужно использовать два таких массива. Ниже приводится пример такой программы, написанной на алгоритмическом языке.

Пример 1. Пример правильной программы на алгоритмическом языке. Программа эффективна и по времени, и по памяти.

алг

нач

цел s = 6 | требуемое расстояние между показаниями

цел amax = 1001 | больше максимально возможного показания

цел N

ввод N

цел a | очередное показание прибора

целтаб мини | текущие минимумы последних s элементов

целтаб миничет | чётные минимумы последних s элементов

цел i

| вводим первые s показаний, фиксируем минимумы

цел ма; ма:= amax | минимальное показание

цел мчет; мчет:= amax | минимальное чётное показание

нц для i от 1 до s

ввод а

ма:= imin(ма, a)

мини := ма

миничет := мчет

кц

цел мп = amax*amax | минимальное значение произведения

цел п

нц для i от s+1 до N

ввод а

если mod(a,2)=0

то п:= a * мини

иначе если мчет

то п:= a * миничет

иначе п:= amax*amax;

все

все

мп:= imin(мп, п)

ма:= imin(ма, a)

если mod(a,2) = 0 то мчет:= imin(мчет,a) все

мини := ма

миничет := мчет

кц

если мп = amax*amax то мп:=-1 все

вывод мп

кон

Возможны и другие реализации. Например, вместо циклического заполнения массива можно каждый раз сдвигать его элементы. В приведённом ниже примере хранятся и сдвигаются не минимумы, а исходные значения. Это требует чуть меньше памяти (достаточно одного массива вместо двух), но по времени решение со сдвигами менее эффективно, чем с циклическим заполнением. Однако время работы остаётся пропорциональным N, поэтому максимальная оценка за такое решение тоже составляет 4 балла.

Программа 2. Пример правильной программы на языке Паскаль.

Программа использует сдвиги, но эффективна по времени и по памяти

var

N: integer;

a: array of integer; {хранение s показаний прибора}

a_: integer; {ввод очередного показания}

p: integer;

i, j: integer;

begin

readln(N);

{Ввод первых s чисел}

for i:=1 to s do readln(a[i]);

{Ввод остальных значений, поиск минимального произведения}

ma:= amax; me:= amax;

mp:=amax*amax;

for i:= s + 1 to N do begin

readln(a_);

if a

if (a mod 2 = 0) and (a

if a_ mod 2 = 0 then p:= a_ * ma

else if me

else p:= amax* amax;

if (p

{сдвигаем элементы вспомогательного массива влево}

for j:= 1 to s - 1 do

a[j] := a;

a[s] := a_

end;

if mp = amax*amax then mp:=-1;

writeln(mp)

end.

Если вместо небольшого массива фиксированного размера (циклического или со сдвигами) хранятся все исходные данные (или все текущие минимумы), программа сохраняет эффективность по времени, но становится неэффективной по памяти, так как требуемая память растёт пропорционально N. Ниже приводится пример такой программы на языке Паскаль. Подобные (и аналогичные по сути) программы оцениваются не выше 3 баллов.

Программа 3. Пример правильной программы на языке Паскаль. Программа эффективна по времени, но неэффективна по памяти

const s = 6; {требуемое расстояние между показаниями}

amax = 1001; {больше максимально возможного показания}

var

N, p, i: integer;

ma: integer; {минимальное число без s последних}

me: integer; {минимальное чётное число без s последних}

mp: integer; {минимальное значение произведения}

begin

readln(N);

{Ввод всех показаний прибора}

for i:=1 to N do readln(a[i]);

ma:= amax;

me:= amax;

mp:= amax*amax;

for i:= s + 1 to N do

begin

if a

if (a mod 2 = 0) and (a

me:= a;

if a[i] mod 2 = 0 then p:= a[i] * ma

else if me

else p:= amax * amax;

if (p

end;

if mp = amax*amax then mp:= -1;

writeln(mp)

end.

Возможно также переборное решение, в котором находятся произведения всех возможных пар и из них выбирается минимальное. Ниже (см. программу 4) приведён пример подобного решения. Это (и аналогичные ему) решение неэффективно ни по времени, ни по памяти. Оно является решением задания А, но не является решением задания Б. Оценка за такое решение – 2 балла.

Программа 4. Пример правильной программы на языке Паскаль. Программа неэффективна ни по времени, ни по памяти

const s = 6; {требуемое расстояние между показаниями}

var

N: integer;

a: array of integer; {все показания прибора}

mp: integer; {минимальное значение произведения}

i, j: integer;

begin

readln(N);

{Ввод значений прибора}

for i:=1 to N do

readln(a[i]);

mp:= 1000 * 1000 + 1;

for i:= 1 to N-s do begin

for j:= i+s to N do begin

if (a[i]*a[j] mod 2 = 0) and (a[i]*a[j]

then mp:= a[i]*a[j]

end;

end;

if mp = 1000 * 1000 + 1 then mp:= -1;

writeln(mp)

Лада Есакова

Когда учащийся 11 класса начинает готовиться к ЕГЭ по информатике – как правило, он готовится с нуля. В этом одно из отличий ЕГЭ по информатике от экзаменов по другим предметам.

По математике у старшеклассника знания точно не нулевые. По русскому языку – тем более.

А с информатикой ситуация намного сложнее. То, что изучается в школе на уроках, никак не связано с программой подготовки к ЕГЭ по информатике.

Что такое ЕГЭ по информатике?

Контрольный тест ЕГЭ по информатике содержит 27 заданий, который относятся к самым разным темам. Это системы счисления, это булева алгебра, алгоритмика, это программирование, моделирование, элементы теории графов.

ЕГЭ по информатике охватывает очень большой спектр информации. Конечно, на экзамене понадобятся только азы, но это основы важных и современных тем.

Подготовка к ЕГЭ по информатике с нуля подразумевает, что ни одну из этих тем ученик не проходил в школе. Обычно это так и есть!

Например, такая тема, как булева алгебра, или алгебра логики, включена в ЕГЭ по информатике. Но она не изучается в школах, даже в специализированных. Ее нет ни в курсе школьной информатики, ни в курсе математики. Школьник о ней понятия не имеет!

И поэтому знаменитую задачу на системы логических уравнений не решает практически никто из учеников. Эта задача в ЕГЭ по информатике идет под номером 23. Скажем больше - преподаватели часто рекомендуют старшеклассникам вообще не пытаться решить эту задачу, и даже не смотреть на нее, чтобы не тратить время.

Означает ли это, что задача 23 из ЕГЭ по информатике не решается вообще? Нет, конечно! Наши ученики регулярно решают ее каждый год. На нашем курсе подготовки к ЕГЭ по информатике из многих тем мы берем только то, что потребуется на экзамене. И уделяем этим задачам максимальное внимание.

Почему же школа не готовит к ЕГЭ по информатике?

Связано это с тем, что информатика – предмет не обязательный. Каких-либо стандартов и программ Министерство образования не дает. Поэтому учителя на уроках информатики дают школьникам совершенно разный материал – кто что может. Более того - в некоторых школах вообще нет уроков информатики.

Чем же обычно занимаются старшеклассники на уроках по информатике? Неужели играют в стрелялки?

К счастью, в школе на уроках информатики все-таки школьники занимаются не ерундой, а вполне полезными вещами. Например, изучают Word и Escel. В жизни это пригодится, но, к сожалению, для сдачи ЕГЭ – абсолютно бесполезно.

Причем Word ребята изучают на серьезном уровне, и некоторые даже сдают экзамены по компьютерной верстке и получают свидетельство верстальщика. В каких-то школах изучают 3D-моделирование. Очень многие школы дают веб-дизайн. Это прекрасная, полезная в будущем тема, но к ЕГЭ она совсем никак не относится! И приходя к нам на курсы, ученик действительно готовится к ЕГЭ по информатике с нуля.

Похожая ситуация – у старшеклассников профильных лицеев. Сильные профильные лицеи честно дают на уроках информатике программирование. Ребята выходят оттуда хорошими программистами. Но ведь в ЕГЭ по информатике всего 5 заданий хоть как-то связаны с программированием, и из них ровно одна задача в варианте ЕГЭ посвящена написанию программы! Результат – максимум 6 задач на ЕГЭ по информатике.

Сколько же нужно времени, чтобы подготовиться к ЕГЭ по информатике с нуля?

Есть хорошая новость! Подготовиться к ЕГЭ по информатике с нуля можно за один год. Это не легко, но можно, и наши ученики каждый год это доказывают. Курс подготовки к ЕГЭ по информатике не очень большой. Заниматься на курсах можно 1 раз в неделю по 2 часа. Конечно, надо активно выполнять домашние задания.

Но есть одна поправка. Если ученик никогда до 11 класса не занимался программированием, за год вряд ли возможно освоить программирование в полной мере. Поэтому нерешенной останется задача №27 варианта ЕГЭ по информатике. Она самая сложная.

Особенно трудно готовиться к ЕГЭ по информатике с нуля тем ученикам, кто вообще никогда не был знаком с программированием и не знает, что это такое. Это область достаточно специфичная, поэтому подготовке по программированию нужно уделять много времени и нарешивать огромное количество задач.

На наших курсах мы обязательно разбираем все типовые задания по программированию. И ни разу на экзамене задача по программированию не оказалась для наших учеников сюрпризом –все они были на курсах разобраны. И только задача 27 остается за бортом для тех, кто вообще до 11 класса программированием не занимался.

Приходя к нам на курсы по информатике, ученики и родители иногда удивляются, не видя в учебном классе компьютеров. Они думают, что раз пришли готовиться к ЕГЭ по информатике, то на столах должны быть компьютеры. Но их нет! Насколько необходимо при подготовке к ЕГЭ по информатики наличие ноутбуков и компьютеров?

Это особенность ЕГЭ по информатике. На экзамене компьютера не будет! И да, надо будет решать задания ручкой на листе бумаги, потому что именно в таком формате сейчас проходит ЕГЭ по информатике. Это реальная проблема для тех, кто его сдает.

Даже старшеклассники из специализированных лицеев, хорошо умеющие программировать, могут оказаться беспомощны на ЕГЭ по информатике. Они, разумеются, программируют на компьютерах, то есть в специальной среде. Но что будет, когда компьютера нет? И не только школьники – даже профессиональные программисты с очень большим трудом могут написать программу на бумаге. Поэтому мы готовимся к такому сложному формату сразу. Мы осознанно не используем при подготовке к ЕГЭ по информатике компьютеры и ноутбуки – согласно правилу «Тяжело в учении, легко в бою».

Уже несколько лет ходят слухи, что ЕГЭ по информатике переведут в компьютерную форму. Это обещали сделать в 2017 году, но не сделали. Сделают ли в 2018 году? Пока не знаем. Если введут такой формат экзамена – готовиться к ЕГЭ по информатике с нуля будет намного проще.

Итак, год активной подготовки к ЕГЭ по информатике с нуля, и ваш результат - 26 задач из 27 возможных. А если вы хоть немного знакомы с программированием – то и все 27 из 27. Мы желаем вам достичь на экзамене такого результата!

И еще раз рекомендую для подготовки теоретический материал и свою книгу «Информатика. Авторский курс подготовки к ЕГЭ» , где дается практика решения задач.

Расскажи друзьям!