ПОДГОТОВКА К ЕГЭ-2014 ПО ИНФОРМАТИКЕ Старший преподаватель кафедры информационных технологий Яковенко Роман Геннадьевич Краснодарский краевой институт дополнительного профессионального педагогического образования Задание C1 Задание C1 Задание C1 N max_digit digit 423 9 3 1 При вводе числа 423 программа выведет число 9 42 2 4 Задание C1 Инициализация заведомо максимальным значением Старший разряд не обрабатывается N Неверное выделение младшего разрядаdigit max_digit 423 Неправильный знак неравенства 9 Неправильное 3 отбрасывание младшего разряда 42 2 Строку max_digit := 9 заменить на max_digit := 0 Строку while N >= 10 do заменить на while N > 0 do Неправильный вывод, 2 например, writeln(digit); 4 Задание C1 Внимательно читайте условие Выполняйте ровно то, что от Вас просят Не переписывайте программу целиком, укажите лишь неправильные строки Укажите явно: строка … не верна. Необходимо заменить на … Не ищите ошибок там, где их нет Задание C2 Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести максимальное значение среди трёхзначных элементов массива, не делящихся на 9. Если в исходном массиве нет элемента, значение которого является трёхзначным числом и при этом не кратно 9, то выведите сообщение «Не найдено». Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.4) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке). Задание C2 максимальное значение среди трёхзначных элементов массива, не делящихся на 9 Стандартный алгоритм поиска максимума: max := a[1]; for i := 2 to N do if a[i] > max then max := a[i]; writeln(max); ..могут принимать значения от 0 до включительно.. Еслицелые в исходном массиве нет10000 элемента, значение которого является трёхзначным числом и при этом {может быть любое, меньшее 100} max := 99; не кратно 9, то выведите сообщение «Не найдено» for i := 1 to N do Решение if (a[i] >= 100) and (a[i] <= 999) and (a[i] mod 9 <> 0) and (a[i] > max) then max := a[i]; if max = 99 then writeln(‘Не найдено’) else writeln(max); Задание C3 Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один или два камня или увеличить количество камней в куче в два раза. Например, имея кучу из 15 камней, за один ход можно получить кучу из 16, 17 или 30 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 27. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 27 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 26. Задание C3 Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока – значит описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника. Выигрышная стратегия игрока А должна содержать все возможные ходы игрока В (он может противостоять любыми способами) и только выигрышные ходы игрока А. На любой ход игрока В должен быть указан ровно один выигрышный ход игрока А. АI X C1 А II BI Xa1 C1 C2 C3 Xb11 Xb12 Xb13 C2 Xa21 C1 Xa22 C1 Xa23 Задание C3 +1 +2 *2 >=27 1. а) Укажите все такие значения числа S, при которых Петя может выиграть в один ход. Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого указанного значения S. Ответ S ≥ 14 Выигрывающий ход: увеличить количество камней в куче в два раза. При этом камней станет 2 * S ≥ 28. При S ≤ 13 Петя никак не получит больше 26 камней, а значит не выиграет в один ход. Замечания Ни в коем случае не перечислять: S = 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 Можно не указывать верхнюю границу S ≤ 26: она задана по условию Обязательно укажите выигрывающий ход Пети Задание C3 +1 +2 *2 ≥ 27 1. а) Укажите все такие значения числа S, при которых Петя может выиграть в один ход. Обоснуйте, что найдены все нужные значения S, и укажите выигрывающий ход для каждого указанного значения S. Ответ S ≥ 14 Выигрывающий ход: увеличить количество камней в куче в два раза. Можно решение: При этом камней станет 2формализовать * S ≥ 28. При S ≤ 13 Петя никак не получит больше 26 камней, а значит не S ≤ 26 S ≤ 26 выиграет в один ход. S + 1 ≥ 27 S ≥ 26 Замечания 14 ≤ S ≤ 26 + 2 ≥ не 27перечислять: S = 14,S 15, ≥ 25 Ни в коемSслучае 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 S * 2 ≥ 27 S ≥ 13,5 Можно не указывать верхнюю границу S ≤ 26: она задана по условию Обязательно укажите выигрывающий ход Пети Укажите один выигрывающий ход Пети для всех S (не надо отдельно для 25 и 26) Задание C3 +1 +2 *2 ≥ 27 1. б) Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом. Опишите выигрышную стратегию Вани. Соображения Можно формализовать решение: Исходя из п. 1а, чтобы Петя не выиграл в один ход, S должно быть меньше, чем 14 < 14 своим первым ходом,Sисходя < 14 из п. 1а, после хода Пети камней Чтобы Ваня Sвыиграл должно быть не меньше, чем 14. S + 1 ≥ 14 S ≥ 13 S = 13значением Поскольку возможны единственным возможным S + 2 ≥ 14ходы «+1», «+2» и «*2», S ≥ 12 S является 13. Иначе, если S ≤ 13 (например 12), то Петя может ходом «+1» получить * 2 ≥ не 14превосходящее 13 (например S≥7 количество S камней 13) и тогда Ваня не выиграет своим первым ходом. Ответ S = 13 Выигрывающий ход: независимо от хода Пети, Ваня своим первым ходом должен увеличить количество камней в куче в два раза. Задание C3 +1 +2 *2 ≥ 27 2. Укажите два таких значения S, при которых у Пети есть выигрышная стратегия, причём (а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрышную стратегию Пети. Соображения Исходя из п. 1б, чтобы Петя выиграл своим вторым ходом, после его первого хода камней должно быть 13. Задача Пети – своим первым ходом привести количество камней к 13. Возможны ходы «+1», «+2» и «*2», с помощью которых Петя будет доводить количество камней до 13. Поэтому возможны следующие значения S: S = 12, тогда Петя должен пойти «+1» S = 11, тогда Петя должен пойти «+2» Ход «*2» невозможен, поскольку нет целого числа, которое при умножении на 2 дает 13 Задание C3 +1 +2 *2 ≥ 27 2. Укажите два таких значения S, при которых у Пети есть выигрышная стратегия, причём (а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрышную стратегию Пети. Ответ (вариант 2) S = 11, S = 12 Ответ (вариант 1) Выигрышная S = 11, S = 12 стратегия видна из дерева игры, в котором указаны все возможные ходы Вани и только выигрышные ходы Пети: Выигрышная стратегия: 1) Первым ходом Петя должен привести количество П II камней к 13. ВI ПI 2) Вторым ходом, независимо от первого хода Вани, *2 Петя должен 28 14 увеличить количество камней в куче в два раза. 11 +1 +2 *2 +2 30 13 15 +1 *2 12 *2 52 26 Задание C3 +1 +2 *2 ≥ 27 2. Укажите два таких значения S, при которых у Пети есть выигрышная стратегия, причём (а) Петя не может выиграть за один ход и (б) Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня. Для каждого указанного значения S опишите выигрышную стратегию Пети. Можно формализовать решение: S + 1 = 13 S = 12 S + 2 = 13 S = 11 S * 2 = 13 S = 6,5 Задание C3 +1 +2 *2 ≥ 27 3. Укажите значение S, при котором: – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети, и – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Для указанного значения S опишите выигрышную стратегию Вани. Постройте дерево всех партий, возможных при этой выигрышной стратегии Вани (в виде рисунка или таблицы). На рёбрах дерева указывайте, кто делает ход; в узлах – количество камней в куче. Соображения Исходя из п. 2, чтобы Ваня выиграл своим вторым ходом, после первого хода Пети камней должно быть 11 или 12 (либо не менее 14). Возможны ходы «+1», «+2» и «*2», после которых Петя должен попасть в указанные выше значения. Поэтому возможно единственное значение S = 10. Тогда: Если Петя пойдет «+1» или «+2» - попадаем в условия п. 2 Если Петя пойдет «*2» - попадаем в условия п. 1а Задание C3 +1 +2 *2 ≥ 27 Ответ (для п. 3) S = 10 Выигрышная стратегия видна из дерева игры, в котором указаны все возможные ходы Пети и только выигрышные ходы Вани: ПI 11 +1 10 П II ВI +2 +2 +1 13 +1 +2 14 15 *2 12 26 *2 20 *2 40 В II *2 *2 *2 28 30 52 Задание C3 Ответ 1. а) S ≥ 14. Выигрывающий ход: увеличить количество камней в куче в два раза. При этом камней станет 2 * S ≥ 28. При S ≤ 13 Петя никак не получит больше 26 камней, а значит не выиграет в один ход. б) S = 13 Выигрывающий ход: независимо от хода Пети, Ваня своим первым ходом должен увеличить количество камней в куче в два раза. 2. S = 11, S = 12 Выигрышная стратегия: 1) Первым ходом Петя должен привести количество камней к 13. 2) Вторым ходом, независимо от первого хода Вани, Петя должен увеличить количество камней в куче в два раза. 3. S = 10 Выигрышная стратегия видна из дерева игры, в котором указаны все возможные ходы Пети и только выигрышные ходы Вани: (изображенное дерево игры) Задание C4 По каналу связи передаётся последовательность положительных целых чисел, все числа не превышают 1000. Количество чисел известно, но может быть очень велико. Затем передаётся контрольное значение последовательности – наибольшее число R, удовлетворяющее следующим условиям: 1) R – произведение двух различных переданных элементов последовательности («различные» означает, что не рассматриваются квадраты переданных чисел; допускаются произведения различных элементов последовательности, равных по величине); 2) R делится на 21. Если такого числа R нет, то контрольное значение полагается равным 0. В результате помех при передаче как сами числа, так и контрольное значение могут быть искажены. Задание C4 Напишите эффективную, в том числе по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет проверять правильность контрольного значения. Программа должна напечатать отчёт по следующей форме: Вычисленное контрольное значение: … Контроль пройден (или – Контроль не пройден) Перед текстом программы кратко опишите используемый Вами алгоритм решения. На вход программе в первой строке подаётся количество чисел N. В каждой из последующих N строк записано одно натуральное число, не превышающее 1000. В последней строке записано контрольное значение. Задание C4 Пример входных данных: 6 70 21 997 7 9 300 21000 Пример выходных данных для приведённого выше примера входных данных: Вычисленное контрольное значение: 21000 Контроль пройден Задание C4 наибольшее число R R – произведение двух различных переданных элементов последовательности R делится на 21 Соображения N*M=21*K, следовательно возможны варианты: 1) Одно из чисел N и M делится на 21. 2) Одно из чисел делится на 7, другое – на 3 Произведение будет наибольшим, когда сомножители принимают максимально возможные значения. Вывод Необходимо найти две пары различных элементов массива: 1) Наибольший элемент, делящийся на 21 и отличный от него наибольший из оставшихся элементов. 2) Наибольший элемент, делящийся на 7 и отличный от него наибольший элемент, делящийся на 3. Таким образом, вводим переменные max, max21, max7 и max3. Каждый из поступающих на вход элементов сравниваем с ними и при необходимости сохраняем. Задание C4 Вывод Необходимо найти две пары различных элементов массива: 1) Наибольший элемент, делящийся на 21 и отличный от него наибольший из оставшихся элементов. 2) Наибольший элемент, делящийся на 7 и отличный от него наибольший элемент, делящийся на 3. Таким образом, вводим переменные max, max21, max7 и max3. Каждый из поступающих на вход элементов сравниваем с ними и при необходимости сохраняем. Замечания Если текущий элемент массива делится на 21 и превосходит max21 (сохраняем его в max21), то его сравнение с max необходимо исключить – вложенный условный оператор. Если текущий элемент массива делится на 7 и превосходит max7 (сохраняем его в max7), то его сравнение с max3 необходимо исключить – вложенный условный оператор. Если текущий элемент массива делится на 21 и превосходит max21, то перед его сохраняем в max21 необходимо проверить, не содержится ли в max21 текущий максимум по всем элементам. Если да, то сначала max21 сохранить в max, а затем текущий элемент в max21. Задание C4 Главное замечание!!! Чтобы научиться программировать нужно программировать! Желаем успехов!