призов олимпиады – цифровым фотоаппаратом от ООО «OCS-Юг».
Второкурсник факультета ПММ Сидоренко Станислав (результат 22 балла ) и
студент СТИ МИС и С Малашенко Олег (результат 17 баллов), занявшие 3
место , получили музыкальные колонки от ЗАО «Рет». Четвертое место
поделили студент 3 курса ПММ Гайдай Виктор (результат 15 баллов),
получивший от президента фирмы RelaxUs (США) А .В . Пешкова
(выпускника ПММ) книгу «Ethical Hacking» объемом 720 страниц и
пятикурсник ВГТА , постоянный участник олимпиад по информатике
Затворницкий Александр (результат 12 баллов), получивший наушники от
«OCS-Юг».
По мнению участников 2-
го тура олимпиадные задания были
достаточно сложными: то
лько 42 % смогли набрать более 3 баллов, 12 %
показали нулевой результат и лишь 10 % набрали выше 12 баллов.
Выпускник факультета ПММ, неоднократный победитель подобных
олимпиад , ныне доцент математического факультета и директор ООО
«Эксперт» С .Д . Махортов учредил приз (модем ) лучшему участнику 2-го тура
математического факультета при условии, если он попадет в первую
половину турнирной таблицы . Этот приз получил студент 2-го курса матфака
Лагунов Сергей, набравший 5 баллов и занявший 7 место . Студент 2 курса
ФКН Десятов Андрей с результатом 8 баллов и студент 2 курса ПММ
Андрейчиков Василий заняли 5 место . Они награждены «Современным
англо -
русским словарем по вычислительной технике» (600 страниц), который
предоставил зам . директора Издательства «РадиоСофт» А . П . Сисев,
выпускник ПММ.
Среди студенток места распределились следующим образом :
Бойченко Анастасия 3 курс ПММ – 1 место ;
Орлова Александра 3 курс ПММ – 2 место ;
Козлова Ольга СТИ МИС и С – 3 место .
Лучшим среди иногородних студентов был Малашенко Олег (17 баллов),
первое место среди студентов технических вузов занял Затворницкий
Александр (12 баллов), среди студентов военных вузов на первое место
вышел Гаршин Игорь (3 балла ).
В рамках Второй открытой студенческой школы – олимпиады по
программированию и компьютерному моделированию состоялась
межвузовская олимпиада по информатике между студентами факультета
Теперь начнем решение основной задачи . Пусть L(s, n) – искомое число .
Выделим несколько свойств этого числа :
1) L(s, 1) = 1,
2) 1 <= L(s, n) <= n.
Допустим нам известно L(s, k - 1). Докажем , что L(s, k) = (L(s, k - 1) + s - 1)
mod k + 1.
Доказательство .
В начале нам даны k чисел и мы, начиная отсчет с единицы , вычеркиваем
число (s – 1) mod k +1. После этого у нас остается k – 1 число и отсчет уже
начинается с числа (s - 1) mod k + 2. Последнее оставшееся число будет L(s, k
- 1)-ым, если считать от (s - 1) mod k + 2, т.е . по формуле (1) это будет ((s - 1)
mod k + 2 + L(s, k - 1) - 2) mod k + 1 = (L(s, k - 1) + s - 1) mod k + 1.
Значит L(s, k) = (L(s, k - 1) + s - 1) mod k + 1, чтд .
Итак, мы вывели рекуррентную формулу
L(s, n) = (L(s, n - 1) + s - 1) mod n + 1 (2)
Основой недостаток этой формулы заключается в том , что мы двигаемся к
цели слишком медленно. Чтобы вычислить L(s, n), нам надо применить
формулу (2) n – 1 раз. Выясним, нельзя ли это сделать это быстрее.
Заметим, что если L(s, n) + s – 1 <= n, то L(s, n + 1) = L(s, n) + s и тогда L(s,
n + 2) = (L(s, n ) + 2s - 1) mod (n + 2) + 1. При этом скорость вычислений
увеличивается .
Допустим, что L(s, n) + (k-1)(s-1) <= n (3), а L(s, n) + k(s-1) >= n (4).
Преобразуем неравенство (3) следующим образом :
L(s, n) + (k - 1)s – 1 <= n + k – 2
L(s, n) + is+ (k - i - 1)s –1 <= n + k – 2
L(s, n) + is –1 <= n + k – 2 – (k – i - 1)s = n + i –1 + k – i –1 – (k – i -1)s =
= n + i – 1 – (k – i -1)(s - 1) <= n + i – 1, если k – i +1 >=0, т.е . i <= k – 1
Итак, из (3) следует, что L(s, n) + is – 1 <= n + i – 1, если i <= k – 1 (5).
Из неравенства (5) при i=1 и формулы (2) следует, что L(s, n + 1) = L(s, n) +
s, откуда L(s, n + 2) = (L(s, n) + 2s - 1) mod (n + 2) + 1. А учитывая (5) при i=2,
из предыдущего равенства получим, что L(s, n + 2) = L(s, n) + 2s, откуда L(s, n
+ 3) = (L(s, n) + 3s - 1) mod (n + 3) + 1. Продолжая так и дальше, получим, что
L(s, n + k - 1) = L(s, n) + (k - 1)s, откуда L(s, n + k) = (L(s, n) + ks - 1) mod (n +
k) + 1. И это равенство уже не упрощается , т.к. действует неравенство (4).
Найдем из (3) и (4) число k:
1) Из (3) получим, что k – 1 <= (n – L(s, n))/(s - 1).
2) Из (4) получим, что k – 1 >= (n – L(s, n))/(s - 1) –1.
Из полученных неравенств следует, что k – 1 = (n – L(s, n)) div (s - 1), откуда
k = (n –L(s, n)) div (s – 1) + 1.
L(s, n + k) = (L(s, n) + ks – 1) mod (n + k) + 1, где max(k) = (n – L(s, n)) div (s -
1) + 1 (6)
Заметим, что скорость вычисления будет тем больше, чем будет меньше s.
Допустим, мы нашли , каким будет по счету последнее оставшееся число ,
если считать от f. Ну а если мы хотим узнать само это число , то по формуле
10
71