Об использовании задач двойного назначения в олимпиадах по информатике

УДК 002:372.8

Братчиков Игорь Леонидович, Сазонова Наталья Викторовна

ОБ ИСПОЛЬЗОВАНИИ ЗАДАЧ ДВОЙНОГО НАЗНАЧЕНИЯ В ОЛИМПИАДАХ ПО ИНФОРМАТИКЕ

Аннотация

В статье рассматриваются задачи для олимпиад школьников по информатике, решения которых могут быть получены как с помощью реализации соответствующих алгоритмов, так и аналитически, то есть чисто математическими средствами. Такие задачи названы задачами двойного назначения. Предлагаются 3 типа таких задач:

1) задачи, решаемые выполнением алгоритмов;

2) задачи, для решения которых требуется анализ алгоритмов с целью их упрощения перед выполнением;

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

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

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

Ключевые слова: олимпиада для школьников по информатике, задачи двойного назначения, алгоритм, анализ алгоритмов, алгоритм схождения чисел, аналитическое решение задачи.

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

© Братчиков И.Л., Сазонова Н.В., 2011

щие применения методов математической логики, задачи из некоторых других областей математики, пограничных с информатикой, таких как системы счисления, методы кодирования, задачи на количество информации и др. В [1] перечислены семь тем, которые, по мнению авторов, должны играть основную роль в подготовке школьников к участию в олимпиадах. Это перебор вариантов и методы его сокращения, динамическое программирование, сортировка и поиск, обработка последовательностей, комбинаторика, алгоритмы на графах, элементы вычис-

лительной геометрии. По нашему мнению, к этому списку следует добавить еще одну тему - анализ алгоритмов.

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

Даны 3 целых положительных числа: 10, /0 и Х0, являющиеся исходными данными для представленного ниже алгоритма.

На каждом шаге алгоритм выполняет следующие действия:

при 4 < 4: 4+1 = 4+Хк, -4+1 = 4 - Хк,

Хк+1 = Хк - 1 (вариант 1);

пРи 4 > -к: 4+1 = 4 - Хк, -к+1 = -к+

Хк+1 = Хк - 1 (вариант 2).

Алгоритм заканчивает работу, когда после некоторого числа шагов 5 значения 18 и окажутся равными: = — = (10 + /0)/2. Числа будут сходиться именно к этому значению, так как в процессе работы алгоритма сумма 1к + -к остается постоянной. Из этого следует, что сумма 10+/0 должна быть четной. Ниже будет показано, что при этом условии алгоритм всегда заканчивает работу за конечное число шагов. Будем считать, что алгоритм работает с целыми положительными числами, поэтому 5 < Х0 < /0. Кроме того, не умаляя общности, примем 10 = 1, и тогда /0 может быть произвольным нечетным числом.

На основе этого несложного алгоритма можно сформулировать ряд частных задач, которые естественно разделить на три группы:

1) задачи, для решения которых рекомендуется применение алгоритма схождения чисел и, следовательно, его реализация в виде программной процедуры;

2) задачи, которые предлагается решать совместно математическими и программными средствами;

3) задачи, поддающиеся решению только математическими средствами.

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

Приведем первые примеры задач:

Задача 1. Даны /0 и Найти все значения Х0, при которых 10 и -0 сходятся через 5 шагов (варианты: найти наименьшее, наибольшее значение Х0).

Задача 2. Даны 5 и Х0. Найти все значения /0, при которых 10 и /0 сходятся через 5 шагов.

Задача 3. Даны -0, 5 и Х0. Проверить, сходятся ли 10 и /0 через 5 шагов при заданном Х0 (вариант: найти число шагов, необходимых для схождения чисел).

Сформулированные задачи могут решаться выполнением алгоритма, причем для первых двух из них требуется перебор вариантов исходных данных.

Для решения задачи 1 нужно осуществить перебор всех значений Х0 от 5 до /0 - 1, выполнить алгоритм для каждого значения и проверить сходимость через 5 шагов.

Решение задачи 2 требует перебора значений /0 и выполнения алгоритма для каждого значения. Перебор должен начинаться со значения, равного Х0 + 1. Для вычисления верхней границы перебора участник олимпиады (в дальнейшем испытуемый) должен учесть, что наибольшее возможное значение /0 - это то, при котором оно уменьшится до (1 + /0)/2 через 5 шагов при условии, что из него будут последовательно вы-

Брятчмкое Ж.Л. Сазонова

читаться значения X0, X0- 1, ..X0 - S + 1. Следовательно, имеем:

J0 - (1 + J0)/2 < SX0 - S(S - 1)/2, или J0 -1 <2X0S-S2 + S, или J0 < S(2X0 - S +1) + 1.

Задача 3 решается применением алгоритма к заданным исходным данным. Программа, реализующая решение, должна выполнить алгоритм до схождения чисел, после чего число шагов алгоритма сравнивается с заданным. Желательно вывести в файл или на печать пошаговые результаты работы алгоритма (значения I, J и X после каждого шага).

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

Пусть X0 - одно из значений, удовлетворяющих условию (то есть I0 и J0 сходятся через S шагов). Работу алгоритма можно разбить на два этапа. На первом n раз (n > 1) выполняются шаги варианта 1. Они заключаются в добавлении к I0 чисел X0, X1, ..., Xn и вычитании этих чисел из J0. Следовательно, разность J- I последовательно уменьшается на 2X0, 2X0 -2, ..., 2X0 -2(n-1). Первый этап работы алгоритма заканчивается, когда окажется, что | Jn - In| = K < Xn Если K = 0, алгоритм заканчивает работу. В противном случае он начинает второй этап своей работы. На нем будут попеременно выполняться шаги двух вариантов.

Пусть Jn - In = K > 0. Тогда второй этап начинается с шага варианта 1:

I +, = I + (X - 1), J+. = J - (X - 1).

n+1 n n n+1 n n

Так как In+1 > Jn+1, следующим будет шаг варианта 2:

In+2 = In+1 -

или

In+2 = In + (Xn- 1) - (Xn- 2),

Jn+2 = Jn - (Xn- 1) + (Xn- 2).

Таким образом,

In+2 =!n + 1, Jn+2 = Jn - 1, Jn+2 - In+2 = K - 2, Xn+2 = Xn - 2

Из приведенных отношений видно, что подобный цикл из двух шагов (шаг варианта 1, шаг варианта 2) будет повторяться, и в результате значения I и J сойдутся ровно через К шагов. Случай, когда 1п - Jn > 0 аналогичен рассмотренному, но второй этап будет начинаться с шага варианта 2, так что цикл будет таким: (шаг варианта 2, шаг варианта 1). Так как по предположению Х0 удовлетворяет условию сходимости 10 и J0 через 8 шагов, имеем К= 5 - п. Указанные особенности работы алгоритма иллюстрируются приведенным в конце статьи примером 2 (последний шаг этапа 1 подчеркнут).

Теперь испытуемый может приступить к разработке формул, с помощью которых можно получить аналитические решения задач. Для представления формул в компактном виде уменьшим 10 и J0 на 1 (тогда 10 = 0) и опустим индекс 0 переменной Х. Значения I и Jn, полученные по окончании первого этапа, представляются следующими формулами:

1п = пХ - (п -1)п/2; Jn = J0 - пХ + (п - 1 )п/2.

Рассмотрим 2 случая:

1) Jn > 1п:

Jn - 1п = J0 - пХ + (п- 1)п/2 - (пХ - (п -1)п/2) = = J0 - 2пХ + (п - 1)п = 5 - п.

2) 1п > Jn:

1п- = " ( *п- 1п) = 2 пХ- J0 - (п - 1)п = 5 - п.

Итак, имеем два равенства, которые лежат в основе аналитических методов:

J0 - 2пХ +

Рассмотрим методы решения сформулированных задач.

Для решения задачи 1 испытуемому нужно представить равенства (1) и (2) в виде формул для вычисления X:

2пХ = J0 - 5 + п2, Х = (J0 - 5 + п2)/2п

2пХ = J0 + 5 + п(п - 2),

Х = (J0 + 5 + п(п - 2))/2п.

Эти формулы можно рассматривать как уравнения, содержащие 2 неизвестные (х и п):

1) X = (/° - 5 + и 2)/2п;

2) X = 0/° + 5 + п(п - 2))/2п.

Далее испытуемый должен найти целочисленные решения уравнений (то есть их можно рассматривать как диофантовы уравнения). Так как на втором этапе алгоритм последовательно выполняет циклы из двух шагов, он заканчивает работу через четное число шагов. Поэтому при нечетном 5 последний шаг первого этапа должен быть нечетным, а при четном - четным. Таким образом, при нечетном 5 следует искать решения уравнений, в которых п принимает нечетные значения в диапазоне [1, 5], а при четном 5 -четные значения п в диапазоне [2, 5].

Решения уравнений находятся путем перебора значений п и вычисления для каждого п значений Х по двум формулам. Все целые значения Х образуют вместе с соответствующими п множество решений: {(п1, Х1), ..., (пт, Хт)}, а значения Х{, I = 1, ..., т - множество значений Х, удовлетворяющих условию задачи. Перебор значений п удобно осуществлять с шагом -2 от 5 до 1 при нечетном 5 и от 5 до 2 при четном. Тогда искомые значения Х будут вычисляться в порядке возрастания. Описанный метод легко реализуется в виде соответствующей программной процедуры.

Решая задачу 2, испытуемый должен представить равенства (1) и (2) как формулы для вычисления /0 ( с учетом того, что в них значение /0 уменьшено на 1):

1) J0 = п(2Х - п) + 5 +1;

2) J0 = п(2( X +1) - п) - 5 +1.

Аналогично задаче 1 для вычисления

значений /0 нужно осуществить перебор нечетных значений п в диапазоне [1, 5] в случае нечетного 5 и четных значений п в диапазоне [2, 5] в случае четного 5. Как видно из формул, значения /0 могут быть вычислены при всех значениях п, причем при п = 5 значения -0, вычисленные по формулам (1) и (2), совпадают. Отсюда следует, что будет найдено 5 значений /0 в случае нечетного 5 и 5 - 1 - в случае четного 5.

Для аналитического решения задачи 3 испытуемому нужно представить равенства (1) и (2) как уравнения для вычисления п (номера последнего шага первого этапа работы алгоритма). Если корень одного из уравнений окажется целым, значение Х

удовлетворяет условию задачи. После несложных преобразований получим:

1) п2 - 2Хп + (/0 - 5) = 0 ;

2) п2 - 2(X + 1)п + (/0 + 5) = 0 .

Корни уравнений таковы:

1) п = (2X 5))/2 или п = X;

2) п = (2( X +1) ^^4(^+1)^-40/0+5))/2

или п = X +1 ±^1 (X +1)2 - (/0 + 5) .

Таким образом, имеем две формулы для вычисления п:

1) п = X ±7 X2 - (/0 - 5) ;

2) п = X +1 ±д/(X +1)2 - (/0 + 5) .

Испытуемому не нужно вычислять сами значения п, а лишь проверить, является ли одно из этих значений целым. Для этого требуется, чтобы значение Х2 - (/0 - 1 - 5) - 1 либо (Х + 1)2 - (/0 - 1 + 5) оказалось квадратом целого (не забываем, что в формулах — уменьшено на 1).

Теперь сформулируем задачи, допускающие только аналитическое решение:

Задача 4. Вычислить число подходящих значений /0 при заданных 5 и Х0, то есть таких, при которых алгоритм заканчивает работу после выполнения 5 шагов.

Для решения задачи испытуемый должен воспользоваться формулами для вычисления /0, которые использованы для решения задачи 2. Как уже упоминалось, из формул видно, что число подходящих -0 равно 5.

Задача 5. Указать условия, при которых задача 1 имеет решения.

Испытуемому следует воспользоваться уравнениями, полученными при разборе задачи 1. Обозначив М1 = /0 - 5 - 1 для первого уравнения и М2 = /0 + 5 - 1 для второго (с учетом того, что в уравнениях /0 уменьшено на 1), получим формулы:

Х = М1/2п + п/2 и Х = М2/2п + п/2 -1.

Теперь нужно найти, во-первых, условие, при котором возможно вычисление целых значений Х, и, во-вторых, условие, при котором значения Х будут удовлетворять не-

Братчмкое Ж.Л., Сазонова

равенству 5 < Х < J0. Для формулировки первого условия испытуемый должен рассмотреть 2 случая:

a) 5 - четное. Как уже упоминалось, в этом случае п может принимать только четные значения. Значит, для того, чтобы М1/2п и М2/2п были целыми, М1 и М2 должны быть кратными четырем. Поскольку М2 = М1 + 25, достаточно проверить на кратность только одно из этих значений.

b) 5 - нечетное. Тогда п принимает нечетные значения. При п = 1 имеем

Х = (М1 + 1)/2 и Х = (М2+ 1)/2 - 1. Так как суммы М1 + 1 и М2+ 1 четные, Х в обоих случаях принимает целые значения и, следовательно, при нечетном 5 можно вычислить, по крайней мере, по одному целому значению Х по каждой формуле.

Вывод: при четных 5 целые значения Х могут быть вычислены, если М1 кратно 4, при нечетных 5 целые значения Х могут быть вычислены всегда.

Далее испытуемому следует проанализировать неравенство, определяющее второе условие. Займемся сначала его левой частью. Подставив вместо Х значения из формул и выполнив несложные преобразования, получим М1 > (25 - п) п и М2 > (25 - п + 1) п или М1/п > 25 - п и М2/п > 25 - п + 1.

a) Если 5 - четное, тогда минимальное значение п = 2. Имеем М1 /2 > 25 - 2; М2 /2 > 25 - 1. Представим в последнем неравенстве М2 через М1: (М1 + 25)/2 > 25 - 1 или М1 /2 > 5 - 1. Отсюда следует, что достаточно проверить только последнее неравенство: ^ - 5 - 1)/2 > 5 - 1 или J0 > 3 5 - 1.

b) Если 5 - нечетное, минимальное значение п = 1. Рассмотрим второе неравенство: М2 > 25 или J0 + 5 - 1 > 2 5. Так как J0 > 5, неравенство выполняется при любых значениях.

Правая часть неравенства определяет второе условие: Х = М1/2п + п/2 < J0 и Х = М2/2п + п/2 -1 < J0. Рассмотрим ее. Наибольшего значения Х достигает, когда вычисляется по второй формуле при п = 1 для нечетных значениях 5 и п = 2 при четных. Поэтому достаточно проверить второе неравенство при этих значениях:

a) п = 1. (/° + 5-1)/2 +1/2-1 < / /° + 5 -1 +1 - 2 < 2/°; 5 - 2 < 2/°.

Неравенство доказано.

b) п = 2. (/° + 5 -1)/4 +1 -1 < /°; /° + 5 -1 < 4/°; 5 -1 < 3/°.

Неравенство доказано.

В результате проведенного анализа получили решение задачи 5: задача 1 всегда имеет решение при нечетном 5 и имеет решение при четном 5, если значение J0 - 5 - 1 кратно 4 и выполнено неравенство J0 > 35 - 1.

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

Приведем примеры решения некоторых из сформулированных задач.

Пример 1. Решение задачи 1 аналитическим методом.

J0 = 273, 5 = 23. Примем п = 5. Вычисляем X по приведенным формулам (не забывая, что мы уменьшили для формул значение J0 на 1, то есть для формул J0 = 272):

1) X = (272 - 23 + 25)/10 = 27.4. Так как значение не целое, решение уравнения (1) не найдено.

2) Х = (272 + 23 + 15)/10 = 31. Получили целое число, значит, найдено решение уравнения (2): (п = 5, Х = 31), и X = 31 является одним из значений, удовлетворяющих условию задачи.

Пример 2. Решение задачи 3 выполнением алгоритма схождения чисел.

Пошаговые результаты работы алгоритма для соответствующих исходных данных приведены ниже (выполнена программа, решающая задачу 3, шаг 5 является последним на первом этапе работы алгоритма) (см. листинг 1).

Пример 3. Решение задачи 5.

J0 = 31, 5 = 10. J0 - 5 - 1 = 20. Получили число, кратное 4. 35 - 1 = 29, неравенство J0 > 35 - 1 выполнено. Задача 1 имеет решение.

J0 = 31, 5 = 12. J0 - 5 - 1 = 18. Получили

Листинг 1

Исходные данные: 1= 1, .= 273, число шагов в задании: 23. Проверяем Х= 31.

Алгоритм выполнит не более чем 31 шаг.

Вар. 1 шага выполняется при и: 1:= 1+Х, .1:= .1-Х, Х:= Х-1. Вар. 2 шага выполняется при и: 1:= 1-Х, .1: = .+Х, Х:= Х-1. Формулировка задачи в файле PROBLEM_1.DOC

Шаг 1 Вар 1. 1= 32 . 242 Х 30 Шаг 2. Вар. 1. 1= 62 212 Х= 29

Шаг 3 Вар 1. 1= 91 183 Х= 28 Шаг 4. Вар. 1. 1= 119 155 Х= 27

Шаг 5 Вар 1. 1= 146 128 Х= 26 Шаг 6. Вар. 2. 1= 120 154 Х= 25

Шаг 7 Вар 1. 1= 145 129 Х= 24 Шаг 8. Вар. 2. 1= 121 153 Х= 23

Шаг 9 Вар 1. 1= 144 130 Х= 22 Шаг 10. Вар. 2. 1= 122 152 Х= 21

Шаг 11 Вар 1. 1= 143 131 Х= 20 Шаг 12. Вар. 2. 1= 123 151 Х= 19

Шаг 13 Вар 1. 1= 142 132 Х= 18 Шаг 14. Вар. 2. 1= 124 150 Х= 17

Шаг 15 Вар 1. 1= 141 133 Х= 16 Шаг 16. Вар. 2. 1= 125 149 Х= 15

Шаг 17 Вар 1. 1= 140 134 Х= 14 Шаг 18. Вар. 2. 1= 126 148 Х= 13

Шаг 19 Вар 1. 1= 139 135 Х= 12 Шаг 20. Вар. 2. 1= 127 147 Х= 11

Шаг 21 Вар 1. 1= 138 136 Х= 10 Шаг 22. Вар. 2. 1= 128 146 Х= 9

Шаг 23 Вар 1. 1= 137 137 Х= 8

После 23-го шага 1=.= 137.

Данное значение X подходит!

число, ие кратное 4. Задача 1 не имеет решения.

/0 = 31, 5 = 14. /0 - 5 - 1 = 16. Получили число, кратное 4. 35 - 1 = 41. Неравенство /0 > 3 5 - 1 не выполнено. Задача 1 не имеет решения.

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

В заключение приведем формулировку еще одной олимпиадной задачи рассмотренного типа [2].

Два робота А и В находятся на плоскости с заданной на ней прямоугольной декартовой системой координат в точках (Х1, У1), (Х2, У2). Каждый робот может двигаться вниз, вверх вправо или влево на N позиций. За один ход любой робот выполняет следующую последовательность действий:

1. Продвигается вперед на N позиций.

2. Изменяет направление движения, повернувшись на 90° по часовой стрелке.

3. Вычисляет новое значение N по формуле N = N + М.

Алгоритм заканчивает работу, когда произойдет столкновение роботов. Столкновением считается ситуация, когда один из роботов после очередного хода попадает в точку, в которой в этот момент уже находится другой робот.

На основе этого алгоритма можно сформулировать несколько частных задач, например:

• Задаются координаты роботов перед началом работы и параметры N и М. Через сколько ходов произойдет столкновение?

• Задаются параметры N и М и число ходов К. Найти такие координаты роботов перед началом работы, чтобы столкновение произошло через К шагов.

• Задаются координаты роботов перед началом работы и параметр N. Вычислить значение параметра М, при котором столкновение произойдет за наименьшее число ходов.

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

Датчиков Ж.Л. Сазонова

Литература

1. В.М Äi/рюхш, С. М. Окулов. Методика решения задач по информатике. Международные олимпиады. М., БИНОМ, Лаборатория знаний, 2007. 600 с.

2. Открытая олимпиада школьников «Информационные технологии» - 2011 // http:// olvmp.ifmo.ru/ (дата обращения 15.12.2011).

Abstract

In this paper the problems for Olympiads of the pupils on Computer Science which decisions can be received by execution of the relevant algorithms and analytically, i.e. by purely mathematical means are considered. Such problems are called dual-use problems. There are 3 types of them:

1) problems solved by executing algorithms;

2) problems whose solution requires the analysis of algorithms to simplify them before the execution;

3) problems solved by mathematical means, without the execution of algorithms.

The methodology of developing dual-use problems is illustrated on an example of algorithm of a convergence of numbers. On its basis are formulated 5 problems concerning three specified types. The paper contains decisions of each of these problems.

The described approach to the development of problems for the Olympiads of the pupils should promote fuller testing of participants as it allows to evaluate not only their knowledge of the fundamentals of programming, but also their mathematical training.

Keywords: olympiads of the pupils on computer science, dual-use problems, algorithm, the analysis of algorithms, algorithm of a convergence of numbers, the analytical decision of a problem.

Братчиков Игорь Леонидович, доктор физико-математических наук, профессор кафедры математической теории микропроцессорные систем управления факультета прикладной математики - процессов управления СПбГУ,

braigor@yandex. ru,

Сазонова Наталья Викторовна, кандидат педагогических наук, доцент кафедры информатики математического факультета РГПУим. А.И Герцена. e-mail: natvic1959@mail.ru.

© Наши авторы, 2011. Our authors, 2011.