Сборник олимпиадных задач по информатике


Сборник олимпиадных задач по информатике

 Введение

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

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

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

Необходимо отметить, что всегда возможно придумать задачи, не относится ни к одной из категорий. Для этого вводят категорию «Разное»

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

Основными категориями олимпиадных задач являются:

□ геометрия

□ графические задачи

□ динамическое программирования

□ длинная арифметика

□ жадный алгоритм

□ задачи для начинающих

□ комбинаторика

□ массивы

□ Математика

□ математическое моделирования

□ Обработка строк

□ последовательности

□ рекурсия, перебор

□ Разное

□ Сортировка

□ структуры данных

□ теория графов

□ теория игр

□ теория цифр

□ физика

геометрия

 

Задача 1.

(I и областная олимпиада, 1988 год)

Вершины ломаной имеют координаты (X, Y), где Y = 1 + X / 2, X = 0,1,2,3,4,5. Составить программу вычисления площади фигуры, ограниченной ломаной линией, осью абсцисс и прямыми X = 0, X = 5.

 

Задача 2.

(ИIИ областная олимпиада, 1989 год)

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

 

Задача 3.

(IV областная олимпиада, 1990 год)

На прямой покрасили n отрезков. Известны координаты L [i] левого конца и координаты R [i] правого конца i-го отрезка (i = 1, 2, …, n). Найти сумму длин окрашенной части прямой.

 

Задача 4. «Одна четверть»

(VI областная олимпиада, 1992 год)

Две точки на плоскости, не лежащих на координатных осях, заданные своими координатами: А (Х 1, Y 1) i B (X 2, Y 2).Проверить, лежат эти точки в одной координатной четверти.

 

Задача 5. «Выпуклость многоугольника»

(VI областная олимпиада, 1992 год)

Известны координаты вершин многоугольника (целые числа). Является ли этот многоугольник выпуклым?

Задача 6. «Треугольная пирамида»

(VII областная олимпиада, 1993 год)

Заданы координаты вершин S, A, B i C треугольной пирамиды SABC. Определить, какие точки нужно соединять штриховой линией при построении ее графического изображения.

 

Задача 7. «Отрезок»

(XИИ областная олимпиада, 1998 год)

Заданное число N — количество точек на плоскости, и числа X1, Y1, X2, Y2, … XN, YN — координаты точек. Нужно составить программу LINE. *, Определяющая координаты концов отрезка наименьшей длины и длину отрезка. На экране изобразить точки и искомый отрезок.

 

Задача 8. «Куски»

(XИИИ областная олимпиада, в 1999 год)

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

 

Задача 9. «Прямоугольники»

(XIV областная олимпиада, 2000 год)

На экране ЭВМ поочередно изображают N (N <10000) прямоугольников, причем цвет каждого следующего прямоугольника отличается от цвета фона и цвета уже построенных прямоугольников. Составьте программу RECTANGL *, определяющей сколько пикселей (точек экрана) будут иметь цвет первого прямоугольника по окончании построения.

входные данные

В первой строке текстового ASCII файла RECTANGL.DAT записано целое число N; в следующих N строках записаны через пробел по четыре целых числа (X1, Yl, X2, Y2) — координаты двух противоположных вершин каждого из прямоугольников.

Исходные данные

В текстовый ASCIl файл RECTANGL.SOL нужно записать единственное целое число — количество пикселей.

Пример входных и выходных данных: RECTANGL.DAT RЕCTANGL.SOL 18 апреля

1 января 6 мая

5 3 7 4

2 4 3 5

3 2 5 4

 

 

Задача 10. «Прямоугольники»

(XVI областная олимпиада, 2002 год)

На плоскости задано N прямоугольников. Стороны каждого прямоугольника параллельны осям координат. Определить площадь той части плоскости, которая принадлежит всем прямоугольникам.

Входные данные:

В первой строке число N, в следующих N строках содержатся по 4 числа X1 Y1 X2 Y2 — координаты левого верхнего и правого нижнего углов прямоугольника соответственно. Координаты — целые числа, лежащие в пределах от — 10000 до 10000 (1 <= N <= 1000).

Исходные данные:

единственное число — значение площади.

пример:

2

10 40 30 20

20 30 40 10

Ответ: 100

Задача 11. «Экономичный Дед Мороз»

(XX областная олимпиада, 2006 год)

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

Есть только проблема их хранения. Для этого Дед Мороз располагает хранилище

полуцилиндрической формы (см. рис.) длиной m и радиусом R единиц.

Сами же подарки представляют собой коробки в виде куба с ребром a

единиц.

Понятно, что Дед Мороз желание сэкономить как можно больше подарков. Конструкцией хранилища предусмотрено, что составлять их можно только так, чтобы одно ребро коробки было параллельным оси хранилища.

Зная размеры хранилища m и R, помогите ему подсчитать количество подарков, которые помещаются в хранилище.

Входные данные: из стандартного входного потока вводится три числа m, R, a, разделенные одним пробелом (0 <m <= 1000000, 0 <R <= 1000000, 0 <a <1000000).

Выходные данные: в стандартный выходной поток выведите единственное целое число — максимальное количество подарков.

входные данные Исходные данные
4 3 2 4
1000 1000 1 1569277000

 

 

 

Задача 12. «Разрез»

(Заочная олимпиада, 2000-2001)

Задано разрез плоской пластины в виде несамопересичнои ломаной. Считая, что концы ломаной лежат на краю пластины и ломаная находится

вполне внутри нее, дать ответ на вопрос: «Можно ли разъединить получены две части пластины, двигая их в горизонтальной плоскости?»

ни

да

 

 

Входные данные: в первой строке содержится целое число N-количество точек ломаной. Во второй строке содержится 2N дробных чисел, разделенных пробелами: x1 y1 x2 y2 … — координаты точек ломаной. 2 <= N <= 1000 — 1000.0 <= xi, yi <= +1000.0. Выходные данные: в выходной поток вывести символ «+», если разъем пластины возможен, иначе вывести «- «.

 

Задача 13.

(Заочная олимпиада, 2000-2001)

На плоскости наметили 1 <= N <= 10000 отрезков. Необходимо найти точку, которая принадлежит наибольшему числу отрезков. Если такая точка не одна, то выдать любое правильное решения.

Выходные данные: в первой строке входного потока число N, а в последующих N строках по два действительных числа (координаты начала и конца очередного отрезка). В первую строку выходного потока вывести координату найденной точки. Примечание: координаты отрезков лежат в пределах от -10000.00 к 10000.00

 

Задача 14. n-угольник

(Заочная олимпиада, 2001-2002)

n-угольник задано координатами (x, y) своих вершин в порядке их обхода (-1000.0 <= x, y <= 1000.0, 3 <= n <= 1000). n-угольник не имеет самопересечений.

Определите по часовой стрелке или против перечислено вершины многоугольника.

В первой ленте входного потока содержится число n. В n следующих лентах содержатся пары чисел x, y разделены пробелами.

В выходной поток вывести один символ: ‘>’, если многоугольник задан по часовой стрелке, ‘<‘, если против.

Пример. Вход:

5

-3.7 2.2

1 1.4

3.3 3.0

2.5 -4

-3.7 -4

Выход:>

 

 

Задача 15. «Треугольный бильярд»

(Заочная олимпиада, 2002-2003)

В бильярдном клубе «Бермудский треугольник» бильярдные столы треугольной формы. Цель игрока в таком бильярде отбить шарик от всех трех сторон так, чтобы она вернулась в исходное положение (прошла через точку старта). Пусть дано стол с вершинами в точках A, B, C и точку В — точку старта. Укажите на стороне AB точку, в которую необходимо выполнить удар, чтобы отразившись последовательно от сторон AB, BC, AC шарик вернулась в точку А.

Технические условия.

Входной файл BILLIARD.DAT содержит четыре строки:

— в первом через пробел координаты (x; y) точки А,

— во втором через пробел координаты (x; y) точки В,

— в третьем через пробел координаты (x; y) точки С,

 

— в четвертом через пробел координаты (x; y) точки А.

Выходной файл BILLIARD.SOL содержит единственную строку, в котором через пробел записаны два числа: координаты точки с точностью до двух знаков после комы.

 

Задача 16. «HMC-покрытия»

(Заочная олимпиада, 2003-2004)

Некоторая гипотетическая фирма HMC — оператор мобильной связи, решила «покрыть» связью N населенных пунктов, расположенных вдоль магистрали. С целью экономии средств относится один передатчик, обязательно на магистрали. Помогите инженерам найти на магистрали место для расположения передатчика, чтобы покрыть все населенные пункты и при этом иметь наименьший радиус действия.

Технические условия:

количество населенных пунктов N;

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

магистраль совпадает с осью Ox.

Входные данные находятся в файле «COVERING.DAT», который имеет структуру:

в первой строке единственное число N (0 <N <= 10000)

в следующих N строках по два действительных числа разделенных пробелом — 10000 <= x <= 10000, -10000 <= y <= 10 000.

Результат вывести в файл «COVERING.SOL», который имеет структуру:

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

Пример 1:

COVERING.DAT COVERING.SOL 2 0.000 5.000

0 0

0 5

Пример 2:

COVERING.DAT COVERING.SOL 2 2.500 2.500

0 0

5 0

Пример 3:

COVERING.DAT COVERING.SOL 4 1.298 11.103

1.23 4.56

7.8 9

-1.306 -4.05

-7.4 6.9

 

 

Задача 17. «Пересечение треугольников»

(Заочная олимпиада, 2003-2004)

Определите, пересекаются два треугольника A и B, заданные координатами своих вершин (Ax1; Ay1), (Ax2; Ay2), (Ax3; Ay3) и (Bx1; By1), (Bx2; By2), (Bx3; By3) в соответствии . Все координаты — целые числа в диапазоне от — 10000 до +10000.

Вершины треугольников и их стороны гарантированно не совпадают.

Примечание: считается, что треугольники пересекаются, если на плоскости существует такая точка, находящаяся внутри обоих треугольников.

Входные данные:

В первой ленте входного потока содержится 6 целых чисел разделенных пробелами — координаты первого треугольника:

Ax1 Ay1 Ax2 Ay2 Ax3 Ay3.

Во второй ленте входного потока содержится еще 6 чисел — координаты второго треугольника:

Bx1 By1 Bx2 By2 Bx3 By3. Исходные данные:

В выходной поток следует вывести символ «+», если треугольники пересекаются, или символ «-«, если нет.

Пример: Входной поток: 0 2 0 6 4 2

1 0 5 0 1 4

Выходной поток:

+

 

 

Задача 18. «Прямоугольник»

(Заочная олимпиада, первая лига, 2005-2006)

Стороны прямоугольника параллельны координатным осям (ось X направлена ​​вправо, ось Y — вверх). Известны координаты концов двух сторон. Все координаты находятся в пределах от -100 000 до 100000. Составить программу для определения того, как размещена каждая из этих сторон в прямоугольнике (верхняя, нижняя, левая или правая).

Входные данные: в текстовом файле figure.dat — две строки, в каждом из которых

— по 4 целые числа X1, Y1, X2, Y2, разделенных пробелами — координаты концов двух сторон прямоугольника.

Выходные данные: в одной строке текстового файла figure.sol — два символа, обозначающих соответствующие стороны прямоугольника: W — верхняя, N — нижняя, L — левая, P — правая.

Пример входных данных — текстовый файл figure.dat:

10 10 20 10

20 10 20 40

Пример выходных данных — текстовый файл — figure.sol:

NP

 

 

Задача 19. «Площадь»

(Заочная олимпиада, первая лига, 2005-2006)

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

Входные данные: В первой строке текстового файла trukut.dat записаны через пробел координаты вершин: X1 Y1 X2 Y2 X3 Y3.Во втором через пробел координаты т. Z: XY.

Выходные данные: В текстовый файл trukut.sol записать «yes» в случае, если т.

Z (X; Y) принадлежит треугольнике, или «no» в противном случае.

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

 

trukut.dat trukut.sol
0 0 0 3 4 0

1 января

yes

 

 

 

Задача 20. «Вертолет»

(Заочная олимпиада, первая лига, 2006-2007)

С вертолета нужно сбросить груз на прямоугольную площадку, координаты вершин которой известны (на схеме обозначена цифрой 0). В случае промаха груз может попасть в одну из восьми областей вблизи прямоугольника (на схеме — цифры от 1 до 8):

1 2 3
8 4
7 6 5

Пилот наблюдает за падением и передает на наземную станцию ​​номер области. При этом границы прямоугольника принадлежат ему, а другие граничные линии принадлежат соответствующим областям с четными номерами.   помогите

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

Входные данные: из стандартного входного потока программа считывает координаты левого верхнего, правого верхнего, правого нижнего, левого нижнего углов прямоугольника и координаты точки падения.Все координаты — целые числа в пределах от -100000 до 100000. Координаты в каждой паре разделены пробелом и вводятся в отдельной строке.

Выходные данные: в стандартный выходной поток вывести одно целое число — номер области, в которую попал груз.

пример 1
входные данные исходные данные
1 января 3
1 февраля  
2 0  
1 0  
3 марта  
пример 2
входные данные исходные данные
2000 20000
4000 20000  
4000 0  
2000 0  
3000 1  

 

 

 

Задача 21. «Открытка и конверт»

(Заочная олимпиада, первая лига, 2006-2007)

Заданные размеры прямоугольных открытки и конверта. Нужно определить поместится открытка в конверте.

Ограничения: размеры открытки и конверта — целые положительные числа, не больше 100.

Входной файл: postcard.in

В первой строке записаны размеры открытки, во втором размеры конверта (в обоих случаях разделенных пробелами).

Выходной файл: postcard.out

Если открытку можно поместить в конверте, то вывести «Possible», если нет — то «Impossible»

Пример 1.

 

postcard.in postcard.out
10 января

9 сентября

Possible

Пример 2.

 

postcard.in postcard.out
9 сентября

9 сентября

Impossible

 

 

 

Задача 22. «День студента» (Заочная олимпиада, 2010-2011) Лимит времени: 1 с

Лимит памяти: 64 Мбт Имя входного файла: c.in

Имя выходного файла: c.out

17 ноября студенты праздновали «День студента». Жители одного города, проживающих би-ля студенческого общежития факультета кибернетики с ужасом вспоминают тот день до сих пор. Студент Степан напился малинового сока, включил на полную громкость музыку авторства Верки

Сердючки и пус-тився в пляс.              Танец Степана принес много убытков приусадебным клумбы и участкам …

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

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

Танец Степана описывается набором из N точек P (0), P (1), …, P (N-1). Степан начинает свой танец в точке P (0) и дальше будет последовательно перемещаться в точки P (1), P (2), …, P (N-1). Между каждой парой соседних точек (то есть между точками P (i) и P (i + 1) для 0 <= i <= N-2) Степан протопчет дорожку, представляет собой отрезок, соединяющий эти две точки. Комендант общежития хочет спрогнозировать, сколько грядок образуется после исполнения танца. Помогите ему в этом нелегком деле.

Входные данные:

В первой строке число N, в первом из следующих двух строк элементы массива x, а в следующей строке элементы массива в. Массивы целых чисел x и y содержат ровно N элементов и описывают координаты точек P (0), P (1),

…, P (N-1). Координаты точки Pi уровне (x [i], y [i]) для 0 <= i <= N-1.

Исходные данные:

Целое число, равное количеству грядок на пустыре после выполнения Степаном танца, описанного во входных данных.

ограничения:

1. Число N от 5 до 100 включительно.

2. Каждый элемент массива x от -100 до 100 включительно.

3. Каждый элемент массива y от -100 до 100 включительно.

Пояснения к примеров:

1. В результате танца Степана образовалась одна грядка квадратной формы

2. В результате танца Степана образовались две грядки треугольной формы

3. Степан прогулялся зигзагом от точки (0, 0) до точки (4, 4), потоптался на месте, а потом точно так же вернулся обратно в точку (0, 0). В итоге не образовалось ни одной грядки.

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

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

 

Пример входных данных: Пример выходных данных:
5 1
0 0 4 4 0  
0 4 4 0 0  
5 2
0 4 0 4 0  
0 4 4 0 0  
9
0 0 4 4 4 4 4 0 0  
0 4 0 4 4 4 0 4 0  
10

0 0 4 4 0 0 4 4 2 2

4
0 4 4 0 0 2 2 4 4 0  
10  
3 -2 2 5 3 4 1 -2 3 4 9
2 -1 -3 4 0 -2 3 1 -2 5  

графические задачи

 

Задача 1.

(I и областная олимпиада, 1988 год)

Предположим, что фигура «снежинка» образуется так: из центра вырастает

6 кристалликов-отрезков длины L под углом 60 градусов и на каждом свободном конце отрезка вырастает по 5 новых отрезков длиной в k раз меньше L, образуют углы в 60 градусов между свободными от резкими. Аналогично, из свободных концов полученных отрезков вырастает по 5 новых отрезков, длина которых в k раз меньше длины хрусталика на прежнем уровне. Написать алгоритм, который рисует «снежинку» для любых L, k, N.

 

Задача 2. «Вложенные квадраты»

(V областная олимпиада, 1991 год)

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

 

динамическое программирование

 

Задача 1.

(I и областная олимпиада, 1988 год)

Стены некоторого упрощенного лабиринта могут быть либо параллельными или перпендикулярными, а длины целочисленными (например, лабиринт нарисованный на листе в клетку). Кольцевые коридоры в лабиринте отсутствуют и с любой его точки существует выход. Автомат, находится в лабиринте, может выполнять только команды:

1. Продвинуться вперед на 1.

2. Повернуть направо на 90 градусов.

3. Повернуть налево на 90 градусов. Автомат может также проверять условия:

1. Впереди стена? 2. Вышел из лабиринта?

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

 

Задача 2.

(ИIИ областная олимпиада, 1989 год)

Данная прямоугольная доска размером M * N клеток. Часть клеток доски заштрихованы. Составить алгоритм нахождения кратчайшего, не содержит заштрихованных клеток пути из левого верхнего в правый нижний угол доски. Движение осуществляется из клетки в клетку по вертикали и горизонтали.

 

Задача 3.

(ИIИ областная олимпиада, 1989 год)

Данная упорядочена по возрастанию линейная таблица натуральных чисел A

[1] <A [2] <… <A [n]. Найти наименьшее натуральное число, не представляется в виде суммы некоторых чисел из этой таблицы.

Объяснение. Сумма может состоять и из одного слагаемого, но каждый элемент может входить в нее не более одного раза.

 

Задача 4. «Рюкзак»

(VII областная олимпиада, 1993 год)

Из заданных n предметов выбрать такие, чтобы их суммарная масса была меньше

30 кг, а стоимость — наибольшей. Напечатать суммарную стоимость выбранных предметов.

Другими словами — заданы две таблицы положительных чисел A [1: n] i B [1: n].Выбрать такие попарно различные числа i 1, i 2, …, i k, чтобы сумма A [i 1] + A [i 2] + …+ A [i k] <30, а сумма В [i 1] + В [i 2] + …+ В [i k] = max была максимальной.Вывести только величину max.

Примечание: Можно считать, что предметы уже размещены в порядке возрастания или убывания массы A [i], или стоимости В [i], цены В [i] / A [i] или любой другой признаки.

 

Задача 5. «Перевозки грузов»

(VII областная олимпиада, 1993 год)

Нужно перевезти n ящиков, масса каждого из которых известна, наименьшим числом рейсов на автомобиле, который вмещает m ящиков общей массой не более р кг. (N, m, p — заданные натуральные числа).

 

Задача 6. «Бартер»

(VIII областная олимпиада, 1994 год)

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

Предприятие может передать другим любое количество своего товара в пределах имеющегося, но не может предлагать чужую продукцию. Биржа может выступать посредником в бартере между производителями товаров, организуя не только попарные обмены, но и более сложные, с соблюдением единой условия: каждый клиент должен получить необходимые ему товары с такой же суммарной стоимостью, на которую он предоставил продукции другим, например: предприятие А предоставляет предприятию В товара на 90 млн, в предоставляет С и D товара соответственно на 70 и 20 млн, а С и D предоставляют пидприμмству а товары на такие же суммы.

ЗАДАЧИ: Написать программу, для заданных предложений и запросов товаров предложит такую ​​комбинацию бартерных сделок, чтобы суммарная стоимость обмененных была как можно больше.

 

Задача 7. «Ступеньки»

(ИX областная олимпиада, 1995 год)

Человек поднимается по лестнице, или ступая на следующую ступеньку, или перепрыгивая через одну или две ступени. Найти, сколькими способами она сможет подняться на N-в место (N <30).

 

Задача 8. «Четырехзначные числа»

(ИX областная олимпиада, 1995 год)

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

 

Задача 9. «Максимальная сумма»

(ИX областная олимпиада, 1995 год)

В клетки квадрата размером N * N вписаны произвольно N * N первых чисел натурального ряда (N <= 7).От левой верхней ячейки к правой нижней

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

 

Задача 10. «Пираты»

(ИX областная олимпиада, 1995 год)

N пиратов нашли клад из золотых монет (N <= 10).Один из них взял себе одну монету и еще 1 / N часть от тех монет, которые остались.Точно так же сделали все остальные пираты. Монеты, оставшиеся они смогли поделить поровну. Найти наименьшее количество монет, которая удовлетворяет описанному алгоритму деления.

 

Задача 11. «Пути»

(X и областная олимпиада, 1997 год)

В одной из клiтинок страницы тетради находится фишка. Горизонталь, на которой эта фишка содержится сначала, будем называть стартовой. Фишки можно передвигать влево, вправо, вверх или вниз. За один ход фишки можно передвинуть на одну клеточку .

Дано: количество ходов n, которые разрешается сделать. получить:

а) количество путей, возвращающие фишки на стартовую горизонталь;

б) перечень всех путей, которые возвращают фишки на стартовую горизонталь; каждый путь представить в виде последовательности ходов (L — слева, R — справа, U — вверх, D — вниз)

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

г) доступ к задачам а), б), в) осуществить через меню.

 

 

Задача 12. «Роман»

(XИИ областная олимпиада, 1998 год)

В романе N глав. В i-й главе ai страниц, i = 1, …, N. Нужно издать роман в K томах так, чтобы объем крупнейшего назад был как можно меньше. Делить главу между томами и переставлять порядок глав нельзя. Напишите программу NOVEL. *, Определяющий оптимальный объем крупнейшего назад.

 

Задача 13. «Загрузка автомобиля»

(XИИ областная олимпиада, 1998 год)

Есть определенный набор предметов p1, p2, …, pN (каждый в одном экземпляре); известны их массы q1, q2, …, qN и стоимости v1, v2, …, vN. Грузоподъемность автомобиля составляет Q. Определите, какие предметы нужно взять на автомобиль, чтобы их суммарная стоимость была максимальна.

 

Задача 14. «Параллелепипед»

(XИИИ областная олимпиада, в 1999 год)

Прямоугольный параллелепипед с натуральными длинами сторон A, B и C (все размеры не больше 10) разбит на кубики с ребром длиной 1. Кубики пронумерованы случайным образом последовательными натуральными числами от 1 до A * B * C. Через сколько кубиков пройдет кратчайший путь от кубика с номером 1 до кубика с номером A * B * C, если на каждом шагу можно переходить в любой соседней (по вертикали, по горизонтали, по диагонали) кубик.

 

Задача 15. «Кубик»

(XIV областная олимпиада, 2000 год)

Дано кубик на гранях которого нанесены определенным образом числа от 1 до 6 и прямоугольную таблицу клетки которой имеют квадратную форму и площадь равную площади грани кубика. Ячейки таблицы заполнены натуральными числами 1, 2,

3, 4, 5, 6 определенным образом. Кубик ставят в северо-западную ячейку таблицы. При этом совпадение числа написано на нижней грани кубика и числа в ячейке не обязательно. Напишите программу KUB * (где * означает BAS, PAS или ССР в зависимости от языка программирования), которая определяет, можно переместить кубик в юго-восточную ячейку таблицы, перекотившы его определенное количество раз через ребро следя при этом, чтобы число в ячейке таблицы и на нижней грани кубика совпадали. Если да, то найдите хотя бы один способ такого перемещения.

входные данные

В первой строке текстового ASCII-файла KUB.DAT через пробел записаны 6 чисел, которые нанесены соответственно на северной, южной, восточной, западной, верхний и нижний гранях кубика. Во второй строке через пробел записаны два натуральных числа М и N — высота (с севера на юг) и ширина (с запада на восток) таблицы. В каждом из следующих М строк записаны через пробел по N чисел, которые образуют таблицу.

Исходные данные

В первой строке текстового ASCII-файла KUB.SOL нужно записать NO или YES. Если перемещение осуществить можно, то во второй строке записывается число К — количество перекатов, в третьей строке через пробел записывается К символов, которые указывают способ перекатывания. Для кодирования перемещения следует использовать такие обозначения направлений перекатывание: N на север, О — на восток, S на юг, W на мероприятие.

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

KUB.DAT KUB.SOL

312465 YES

58 11

52645264 OSOOSOOSOOS

61634521

12545262

51635163

13526454

Задача 16. «Фирма»

(XV областная олимпиада, 2001 год)

С м.Каменец-Подольского в Славута отправились две супер грузовика за изделиями на фирму «Олимпиец». Оплата труда водителей пропорциональна груза, водители перевозят своими грузовиками. Известно, что на фирме «Олимпиец» изготовлено N изделий, вес каждого из которых А1, A2, …, Аn .

Нужно составить программу FIRMA.PAS (FIRMA.BAS, FIRMA.CPP) загрузка обоих грузовиков, чтобы общие массы грузов обоих грузовиков были максимально близкими. Вантажопидьйомнисть грузовиков позволяет убрать изготовленную продукцию. Ваша программа должна прочитать данные из входного файла FIRMA.DAT, а результат вывести в выходной файл FIRMA.SOL

Входные данные:

В первой строке текстового файла FIRMA.DAT записано натуральное число N — количество изделий; в следующих N строках записаны действительные числа — масса i-го изделия в центнерах.

Исходные данные:

В единственной строке текстового файла FIRMA.SOL должны быть записаны через пробел общие массы изделий, которые загружены на первую и вторую грузовика.

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

FIRMA.DAT. 4

3.15

6.56

4.12

5.6

FIRMA.SOL 9.71 9.72

Задача 17. «Листья бумаги»

(XV областная олимпиада, 2001 год)

Прямоугольные листья на поверхности квадратного стола (размером 100х100) расположены так, что их стороны лежат параллельно сторонам стола. Листья могут перекрываться, но нет полностью закрытых листьев и таких, которые касаются сторонами. Написать программу, которая определяет минимально возможное количество листов бумаги, обеспечивающие расположение согласно заданных координат видимых углов листьев.

Входные данные.

В первой строке входного потока задано количество видимых углов (<20). В каждом следующей строке (через пробел) — пара координат, определяет один видимый угол (X и Y).

Результат.

Вывести в выходной поток количество листьев.

 

 

Задача 18. «Робинзон Крузо»

(XV областная олимпиада, 2001 год)

После того как Робинзон Крузо построил свою лодку, он решил исследовать ближайшие острова архипелага из N островов. Целью своего путешествия он выбрал N-ый остров, надеясь, что найдет на нем туземное поселение и британского консула. Опасаясь тропических штормов, он решил не отходить далеко от берега и переплывать с одного острова на другой, только если расстояние между берегами этих островов (и, соответственно, плавание вдали от берега) не превышает D километров. Для упрощения задачи все острова будем считать кругами с разным радиусом. Напишите программу KRUSO.PAS (BAS, СРР), которая поможет

Робинзону определить, сможет ли он добраться до N-го острова. Во входном текстовом файле KRUSO.DAT в первой строке записаны два целых числа N (2 <= N <= 100) и D (5 <= D <= 50), разделенных одним пробелом — число островов и максимальное расстояние, на которое решится осуществить плавание

Робинзон. В следующих N строках находится по три целых числа Хи, Yi, Ri (0 <= Xi, Yi <= 1000, K = Ri <= 50, l <= i <= N) через один пробел — координаты и радиус острова. Первый остров является стартовым, а N-ый — целью путешествия.

В выходной текстовый файл KRUSO.SOL вывести YES, если Робинзон сможет добраться до цели, или N0, если цели невозможно достичь для заданного ограничения D.

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

KRUSO.DAT 59

25 мая 3

8 декабря 2

15 15 мая

30 15 марта

35 5 апреля

KRUSO.SOL YES

 

Задача 19. «Сжатие изображений»

(XVI областная олимпиада, 2002 год)

Черно-белое изображение, состоящее только из белых и черных точек, сжимается таким образом. Если изображение состоит только из черных точек, то в выходной поток выводится два бита — 0 и 0. Если изображение состоит только из белых точек, то в выходной поток выводится два бита — 0 и

1. Если же изображение содержит черные и белые точки, то в выходной поток выводится бит 1, изображение разбивается на 4 части, и каждая часть сжимается тем самым алгоритмом отдельно, сначала первая, затем вторая, третья и четвертая:

 

1 февраля

4 марта

Выходной поток представляет собой сжатый изображения.

Например, изображение

 

1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1
1 1 1 1

 

 

будет сжатый как 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0

 

 

Входные данные:

Файл test.img содержит сжатый изображение размером 256 на 256 точек.

Первыми идут младшие биты байта.

Напишите программу, которая выводит изображение на экран в графическом режиме.

 

Задача 20. «Лабиринт»

(XVII областная олимпиада, 2003 год)

Маленький Паскаль заблудился в магической пещере, и никак не может найти из нее выход. Но имея план пещеры-лабиринта и зная свое местонахождение, он решил написать на своем карманном компьютере программу, которая определит наименьшее время, за которое он может добраться выхода. План имеет вид квадрата размером NxN (3 <= N <= 50), что разбит на ячейки 1х1. На плане лабиринта есть такие условные обозначения:

«0» — свободная ячейка «-1» — стена

«-2» — ячейка где находится Паскаль

 

«3» — ячейка выход

«A» — 1 <= A <= 10 вход в магического телепорта с номером A

«B» — 101 <= B <= 110 выход из магического телепорта с номером (B-100)

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

В первой строке файла MAZE.DAT находится число N. В следующих N строках — план лабиринта.

В файл MAZE.SOL необходимо записать единственное чило — время (в минутах), за который Паскаль достанется выхода из лабиринта. Ваша программа должна иметь название MAZE.PAS (BAS или CPP).

Пример: MAZE.DAT 5

0 0 0 0 0

0 7 0 -1 0

0 0 0 -1 -3

-2 0 0 -1 0

0 0 0107 0

 

 

MAZE.SOL 6

 

Задача 21. «Копперфильд»

(XVIII областная олимпиада, 2004 г.)

Каждый год известный иллюзионист Копперфильд проводит копперфильдивську лотерею.Победитель лотереи получает право сыграть с

Копперфильдом в игру в его замке, результат которой определяет выигрыш победителя. Замок состоит из M * N красных и зеленых квадратных комнат, которые размещаются в шахматном порядке. В некоторых комнатах замка включен свет. Победитель лотереи (игрок) сначала выбирает любую комнату цвета, который укажет Копперфильд, и в которой горит свет. В каждой комнате лежит чек на $ 1000, и игрок, проходя через комнату, забирает чек себе. Чтобы ограничить перемещение игрока, Копперфильд выключает свет в некоторых комнатах, после чего игрок переходит в одну из соседних комнат, в которой еще горит свет. Игра заканчивается, когда игрок оказывается в единой светлой комнате. Тогда игрок выигрывает ту сумму денег, которую он собрал, проходя через комнаты замка. Если же в процессе игры Копперфильд исключит свет в комнате, в которой находится игрок, то игрок получает все M * N * 1000 долларов. Копперфильд действует так, чтобы даже при наиболее неблагоприятных для Копперфильда действиях игрока, тот собрал как можно меньше чеков. Определить гарантированный выигрыш игрока.

Объяснение.

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

После хода Копперфильда игрок оказывается в единой освещенной комнате в замке. В этом случае игрок забирает себе все чеки, собранные в комнатах, через которые он проходил на пути к последней комнаты;

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

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

входные данные

Первыми задаются размеры замка M и N (4 <N, M <100). Затем, начиная с новой строки, задается план замка. План замка состоит из M строк текста по N символов в каждой строке. Символ «0» означает, что свет в текучей комнате исключено, а символ «1» — включено. Все освещенные комнаты замка связаны друг с другом, то есть с одной освещенной комнаты замка всегда можно пройти в любую другую освещенную комнату, проходя только через освещенные комнаты. В замке в начальный момент игры является не более 2000 освещенных комнат.

Исходные данные

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

примеры

 

5 мая 2 февраля 2
00100  
00100  
11111  
00100  
00100  
 

5 мая

 

1 апреля 3

00000  
11110  
11110  

11110

11110

 

 

Задача 22. «Дед Мороз в замке»

(XIX областная олимпиада, 2005 год)

Старинный замок имеет форму квадрата и содержит NxN комнат. В каждой комнате расставлены ящики с золотыми монетами.Дед Мороз находится в верхней левой комнате и мечтает, собрав как можно больше монет, добраться к правой нижней комнаты, где его ждет волшебная Снегурочка. С каждой комнаты он может перейти в соседнюю внизу или соседней справа. дед Мороз также хочет запомнить маршрут, он пройдет.помогите Деду Мороза.Входные данные: В первой строке файла SANTA.CLS находится одно число N (1 <= N <= 30).В каждом i-м из следующих N строк

находится N чисел, определяющих количество монет в комнате (i, j).

Пример ввода: 5

7 1 4 9 3

3 8 4 2 1

8 Январь 6 7 7

2 июля 4 4 5

4 5 2 6 5

Выходные данные: Ваша программа должна выводить в первую строку файла SNOW.MDN одно целое число — количество монет, которую удалось собрать Деду Морозу. Во второй строке — маршрут — номера комнат, в которых побывал Дед Мороз, начиная с комнаты (1,1), и заканчивая (N, N).

Пример вывода: 52

(1,1) (2,1) (2,2) (2,3) (3,3) (3,4) (3,5) (4,5) (5,5)

Задача 23. «Chess»

(XX областная олимпиада, 2006 год)

Пехотинец против всадника! Никаких шансов для победы !? Посмотрим. Итак, поле боя — шахматная доска размерности NxN (4 <= N <= 100). На доске находятся конь и пешка. Ваша задача написать программу, определяющую количество ходов, которые нужно сделать лошади, чтобы побить пешку, следующий в дамки, или вывести 0, если этого он сделать не сможет. Пешка ходит только на одну клетку вперед; если пешка дошел в дамки (на первую строчку таблицы) и конь имеет очередной ход в эту ячейку, то мечты пешку НЕ осуществились.

Входной файл chess. in содержит единственную строку в котором находятся в таком порядке целые числа через пробел: первое число N — размер доски, второе — 0 или 1 (1 — первый ход пешки, 0 — первый ходит конь), далее записаны координаты коня и пешки.

Выходной файл chess. out содержит единственное число — количество ходов коня,

или 0.

 

 

Задача 24. «Подарок для Мудрой Совы»

(XX областная олимпиада, 2006 год)

Пятачок и Винни-Пух собрались в Мудрой Совы на день рождения. В качестве подарка решили собрать букет полевых ромашек. Ромашковое поле задано прямоугольной матрицей M x N, в клетках которой записано количество ромашек, которые растут на данном участке поля. Любой клочок поля содержит хотя бы одну ромашку.

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

Напишите программу, которая поможет указать направление движения: NW — северо-запад, NE — северо-восток, SW — юго-запад, SE — юго-восток.И определите при этом максимально возможное количество ромашек в букете.

Технические условия:

В первой строке входного текстового файла owl.dat записаны через пробел два целых нечетных числа: M и N. (2 <M, N <100).

В следующих M строках записано по N чисел в каждом разделенных пробелом. Каждое из чисел не превышает 10000.

Ваша программа должна вывести в файл owl.sol направление движения в виде: NW — северо-запад, NE — северо-восток, SW- юго-запад, SE — юго-восток.И через пробел в соответствующей строке количество ромашек. Если таких направлений будет больше одного, то вывести все от NW по часовой стрелке.

Пример 1.

 

owl.dat owl.sol
3   3 NE 7
1 2 3  
3 2 1  
1 января 1      

Пример 2.

 

owl.dat owl.sol
        NW 7
3

1 февраля

3 февраля

 

1

1

 

2

2

5

1

3

NE 7

SE 7

1 1 3 1 1       SW 7

 

 

 

Задача 25. «Знакомства»

(XX областная олимпиада, 2006 год)

На олимпиаду по информатике приехало N участников (1 <= N <= 200). Некоторые из них уже знакомы между собой. Вам необходимо написать программу, которая определяет,

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

Входные данные:

Во входном потоке в первой строке содержится число N. Далее, в N строках заданные целые числа, разделенные пробелами, которые обозначают номера участников, с которыми знаком этот ученик. Если участник ни с кем не знаком, то в строке содержится значение 0.

Исходные данные:

В выходной поток необходимо вывести одно число — количество групп.

Например:

 

Input Output
6   3
5 3  
4    
1    
2    
1    
   

 

 

 

Задача 26. «Золотое дерево»

(XX областная олимпиада, 2006 год)

Как известно, глуповатый Буратино по совету кота Базилио и лисы Алисы ровно в полночь на Поле чудес в Стране дураков посадил «золотой».В первый день из «золотого» вырастет ствол единичной длины. За каждый последующий день каждая из волшебного дерева, включая ствол, вырастает в том же направлении еще на одну единицу длины.

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

определяется ее положением относительно ствола: ствол имеет нулевой порядок, ветки, растущие от ствола — первый порядок, от ветвей первого порядка — второй и т.д., см. рис).

Вам необходимо написать программу, которая позволяет определить количество золотых плодов, если полнолуние состоится через T дней (1 <= Т <= 28).

Входные данные:

Входной поток содержит три целых числа T, K и N, разделенные между собой пробелами.

Исходные данные:

В выходной поток необходимо вывести одно число — количество золотых плодов.

Например:

 

Input Output
3 1 марта 3

 

 

 

Задача 27. «Музыкальная коллекция»

(XX областная олимпиада, 2006 год)

Школьник Вася собрал музыкальную коллекцию, которая состоит из M любимых песен. Чтобы слушать песни, Вася решил записать их на N дисков, каждый из которых может содержать не более P минут музыки по следующим правилам:

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

2) количество записанных песен должна быть максимально возможной.

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

Входные данные.

В первой строке файла music.dat находятся числа N, P, M разделены пробелом. (1 <= N, P, M <= 30).

В следующих M строках по одному числу: в i-й строке размер в минутах песни с номером (i-1). Все входные данные — целые числа.

Исходные данные.

В первую строку файла music.sol вывести максимальное количество песен, которую Вася сможет записать на диски.

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

 

music.dat music.sol
2 5 3 2
2      
4      
3      

 

 

 

Задача 28. «Глобальное потепление»

(XX областная олимпиада, 2006 год)

Кому из вас не известен знаменитый мультфильм режиссеров Криса Уейджа и Карлоса Сайдан «Ледниковый период»?              Говорят, что после

«Ледникового период-2» выйдет «Ледниковый период-3» и в перспективе начнутся работы над созданием нового катастрофического мультфильма

«Глобальное потепление-1».

Изюминку сюжета этого фильма составляет момент, когда ненасытная белочка Скрэт попала в Долину Желудей. Кроме огромных пищевых запасов, Скрэт поразила сама местность. Вся долина — это определенное количество холмов, представляют собой полусферы различных радиусов. Конечно, эти симпатичные бугорки пестрят от обилия желудей. Все было бы для Скрэт замечательно, если бы Человек своей техногенной деятельностью не спровоцировала глобальное потепление. Очередная катастрофа застала белочку посередине этой широкой долины. Долину начало быстро затапливать и Скрэт в панике прыгала с одной бугорка на другой в поисках спасения. Белка, благодаря большим запасам желудей было достаточно энергии чтобы прыгать на любой бугорок, что находился не дальше, чем L метров от бугорка, на котором находилась

она сама. Расстояние между бугорками — это расстояние между центрами полусфер независимо от их радиуса. За каждую минуту вода поднималась на высоту H метров. Итак, высота видимой из воды части полусферы также уменьшались на H м в каждую минуту. Скрэт видела, что один за другим исчезают под водой спасительные островки земли. Для того чтобы спастись, она должна быстро добраться крупнейшего бугорка-островка. Помогите Скрэт найти спасительный путь к самому островка, если она за 1 минуту может осуществить только один прыжок. Белочка не может прыгать на островок, сравнялся с поверхностью воды, но всегда успевает покинуть островок, который должен быть затоплен в течение следующей минуты.

Входные данные: В первой строке входного файла skret.dat находятся три целых числа N, L, H (2 <= N <= 100, 0 <L <= 1000, 0 <= H <100).В следующих N строках даны по три целых числа Xi, Yi, Ri (- 10000 <= Xi, Yi <= 10000, H <Ri <= 10000). Скрэт в начальный момент времени находится на первом острове. Нижние части островков могут перекрываться, но никакие два центра не совпадают.

Выходные данные: В случае наличия спасительного пути к крупнейшего острова в первую строку выходного файла skret.sol вывести наименьшее количество прыжков Скрэт, а во вторую строку через пробел вывести номера островов, на которые она должна последовательно прыгать.Если есть несколько крупнейших островов — вывести путь к острову с минимальным номером. В случае отсутствия спасительного пути в единственную строку выходного файла вывести сообщение «The life is fine» без кавычек.

 

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

skret.dat 6 4 1

1 января 1

0 3 февраля

3 5 1

 

6 июня 4

4 0 2

6 февраля 3

skret.sol 3

5 июня 4

skret.dat 10 февраля 10

0 0 5

10 10 20

skret.sol

The life is fine

 

 

Задача 29. «Ежик»

(XXII областная олимпиада, 2008 год)

На шахматной доске размером N x N расставлены К пронумерованных фишек.Ежик, который собирает эти фишки, выходит из клетки с координатами (1,1) и должен собрать все фишки в порядке возрастания их номеров. Из клетки с координатами (x, y) ежик может переместиться только в одну из четырех соседних, то есть в одну из клеток с координатами (x + 1, y), (x-1, y), (x, y + 1) или (x, y-1), обычно с соблюдением условия, что он не должен выходить за пределы доски. Требуется определить, какое минимальное количество ходов нужно сделать, чтобы собрать все фишки. Если ежик проходит через клетку, где находится фишка с большим номером, чем он сейчас должен взять, то он просто проходит, а фишка остается стоять.

Входные данные. Ваша программа должна вводить с клавиатуры сначала два числа разделенных пробелом N и K (1 <= N, K <= 1000).Далее в K строках по два целых числа, разделенных пробелом — координаты фишек в порядке возрастания их номеров, то есть сначала для первой фишки, затем для второй фишки и т.д. (1 <= х, у <= N).

Исходные данные. Ваша программа должна вывести на экран одно число — минимальное количество шагов ежика, необходимых для сбора всех фишек.

Выходные данные:

В выходной файл необходимо вывести

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

 

Входные данные: Исходные данные:
4 марта 11
3 марта  
1 апреля  
1 февраля  

 

 

 

Задача 30.

(XXIII областная олимпиада, 2009 год)

Существует некоторая улица с односторонним движением, имеет M мест для парковки автомобиля с номерами от 1 до M. В автомобиле, едет по этой улице, рядом с мужем-водителем дремлет его жена, вдруг просыпается и требует немедленно остановиться. Мужчина послушно выполняет желание женщины и останавливается на первом свободном месте для парковки, что находится впереди. Если же свободных мест до конца улицы нет, то законопослушность водителя превышает послушание женщине и он, извиняясь, едет дальше.

Пусть, на этой улице оказались N автомобилей с женщинами, дремлют рядом с водителем. Причем, женщина с j-го автомобиля проснется напротив a [j] -го места парковки. Найдите одну из возможных последовательностей парковки автомобилей или максимальное количество припаркованных автомобилей в случае, когда не все автомобили смогут припарковаться. Будем считать, что все места парковки в начале были свободны и ни один из автомобилей не покидает свое место парковки.

Задача 31.

(XXIII областная олимпиада, 2009 год)

Кружковцы Славутской СЮТ решили сконструировать монтажную плату с минимальной индуктивностью проводящих дорожек.

Как известно, прямой ведущий имеет меньшую индуктивность, чем проводник, содержащий повороты.Итак, юным Радиотехникам надо научиться решать задачу: как соединить точку А с точкой В дорожкой с минимальным количеством поворотов. Давайте поможем кружковцам в нахождении такого пути от точки А до точки В.

Итак, имеем прямоугольную плату N x M ячеек. Каждая из клеток или занята проводником, или свободная. Дорожки можно строить только параллельно сторонам платы, повороты проводника можно делать только в середине клеток. Каждая клетка может содержать только одну ведущую дорожку. Найдите путь от клетки А в клетку В с минимальным количеством поворотов.

В первой строке входного файла input.txt содержатся целые числа N, M (0 <N, M <1000). В следующих N строках содержит по M символов:. — пустая ячейка, * — ячейка занята проводником A — начальная точка, В — конечная точка.

В первой строке выходного файла output.txt вывести минимальное количество поворотов на пути от точки А к точке В, а в последующих — один из возможных путей в формате приведенного примера. Если пути не существует, то вывести «There is no way».

 

Задача 32. «Lines»

(XXIV областная олимпиада 2010 год)

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

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

 

Задача 33. «Путешествие мячика по ступенькам»

(Заочная олимпиада, 2002-2003)

На вершине лесенки, состоящей из N ступенек, находится мячик, который начинает катиться, подскакивая, вниз. Мячик во время своей «путешествия» может прыгнуть на следующую ступеньку, через одну или через две ступеньки. (То есть, если мячик находится на 10 строчке, то он может переместиться на девятое, восьмое и седьмое ступени). Определить число всех возможных маршрутов «путешествия» мячика на землю.

Технические условия.

В файле BALL.DAT содержится единственное число 0 <N <31.

В исходном файле BALL.SOL содержится одно число — количество маршрутов.

 

Задача 34. «НЭП»

(Заочная олимпиада, 2002-2003)

В некоторой фирме, не обремененных средствами производства, для выпуска N видов готовой продукции работает две бригады. Для j-го изделия первой бригаде необходимо время а [j] и время b [j] нужен 2-й бригаде для упаковки изделия. В какой последовательности необходимо производить изделия, чтобы общее время для изготовления и упаковки всей продукции был минимальным. Все виды продукции обрабатываются бригадами в одной последовательности.

Технические условия:

Входной файл NEP.DAT в первой строке содержит одно число 0 <N <31 — количество видов продукции. Второй — N целых чисел — временные затраты первой бригады для выпуска каждого вида продукции. Третья строка — N целых чисел — временные затраты второй бригады для упаковки каждого вида продукции.

Например:

5

4 4 30 6 2

5 1 4 30 3

Выходной файл NEP.SOL в ПЭШО строке содержит N целых чисел — оптимальный порядок выпуска видов продукции, второй — одно целое число — общее время изготовления всех видов продукции.

Например:

1 мая 4 3 2

47

 

 

Задача 35. «Фабрика»

(Заочная олимпиада, высшая лига, 2005-2006)

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

За один день каждый рабочий, умеющий работать в станками, может научить ровно одного другого рабочего, но для этого нужно занять в день отдельный станок, так учиться можно только на практике. За каждым станком можно обучать только одного рабочего в день.     Через сколько дней все рабочие будут уметь производить передовые устройства при оптимальном плане обучения?

Технические ограничения: (1≤ N ≤10 ^ 9), (1≤ M <N), (1≤ K ≤10000).

Входные данные.В первой строке файла plant.dat записаны числа N, K, M

через пробел.

Исходные данные.В первую строку файла plant.sol вывести одно число — минимальное количество дней,

за которые можно научить всех рабочих.

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

plant.dat 8 марта 2

plant.sol 3

 

Задача 36. «Горный туризм»

(Заочная олимпиада, высшая лига, 2005-2006)

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

Карта территории, по которой можно перемещаться, представленная прямоугольной таблицей размера M x N. Каждая ячейка таблицы задает высоту соответствующей вершины в метрах.Турист сейчас находится на вершине с координатами (x1, y1), а вершина, на которую он хочет попасть, имеет координаты (x2, y2). Турист тратит по одной единице своей силы на каждый метр подъема или спуска. Перемещаться он может только между теми вершинами, которым на карте соответствуют соседние клетки. Так с вершины с координатами (x, y) можно переместиться только у вершины (x-1, y), (x + 1, y), (x, y-1), (x, y + 1), если они находятся в пределах карты.

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

Входные данные.В первой строке файла map.dat записаны числа M, N. (2≤M, N≤100). Во второй строке находятся числа x1, y1, x2, y2.Далее следуют M строк по N чисел от до 2000, которые задают высоты вершин на карте.В i-м строке на j-м месте записана высота вершины с координатами (i, j).

Исходные данные.В первую строку файла map.sol записать единственное число — минимальное количество единиц силы, которую турист должен затратить на путешествие к нужной вершины.

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

map.dat 2 марта

1 января 1 марта

100200

900500

300400

map.sol 600

 

Задача 37. «Б-дерево»

(Заочная олимпиада, высшая лига, 2005-2006)

Владислав очень интересуется программированием, особенно различными структурами данных. Сейчас он пытается овладеть Б-дерева. Б-дерево — это дерево, каждая вершина которого имеет ровно одного предка (кроме корня, который их нет вовсе) и n детей.Поэтому Владислав пытался нарисовать на бумажке Б-дерево. Чтобы подробнее разобраться, Владислав написал в корне число

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

Входные данные: в единственной строке входного файла содержится два числа n (1≤ n <2 ^ 31) и m (2≤ m <2 ^ 31).

Входные данные: в единственную строку выходного файла выведите единственное число — сумму написанных Владиславом чисел.

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

 

btree.in btree.out
5 марта 14

пояснение:

Ниже изображено, нарисованное Владиславом дерево.

 

Задача 38. «Археология»

(Заочная олимпиада, высшая лига, 2006-2007)

Археологи проводят раскопки старинного города. Они установили, что в разные периоды, на одном и том же городе были установлены различные сооружения, площадь фундаментов которых могут пересекаться. Они создали «карту фундаментов» и хотят узнать общую площадь, которая была покрыта сооружениями.

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

Входные данные (файл FUND.DAT):

В первой строке находится число N — количество фундаментов. (0 <N <= 3000).

В каждой из следующих N строк находятся координаты левого верхнего и правого нижнего углов каждого из фундаментов. (координаты — целые числа в пределах от 0 до 1000000).

Исходные данные (файл FUND.SOL):

В выходной файл записать единственное число — площадь покрытую фундаментами.

Результат записать с тремя знаками после запятой.

пример:

 

FUND.DAT FUND.SOL
3 700.000
20 30 40 10  
10 40 30 20  
23 25 25 15  

 

 

 

Задача 39. «Проблема« умножения »

(Заочная олимпиада, высшая лига, 2006-2007)

В игру «Умножение» играют с рядом карт, каждая из которых содержит одно положительное целое число. За один ход игрок забирает одну карту из ряда и получает определенное число баллов, равное произведению числа на забранной карте и чисел на картах, лежащих непосредственно слева и справа от нее. Запрещается убирать первую и последнюю карты ряда. После последнего хода в ряду остаются только две карты.

Цель игры — убрать карты в таком порядке, чтобы минимизировать общее количество набранных баллов.

Например, если карты содержат числа 10, 1, 50, 20 и 5, игрок может взять карту с числом 1, затем 20 и 50, получая баллы

10 * 1 * 50 + 50 * 20 * 5 + 10 * 50 * 5 = 500 + 5000 + 2500 = 8000.

Если бы бы он взял карты в обратном порядке, то есть 50, затем 20, затем 1, количество набранных баллов была бы такой:

1 * 50 * 20 + 1 * 20 * 5 + 10 * 1 * 5 = 1000 + 100 + 50 = 1150.

Входные данные: в первой строке файла mpuzzle.in находится одно число — количество карт N, во втором — разделены пробелами N чисел на картах.

Ограничение: 3 <= N <= 100, числа на картах цели от 1 до 100.

Входные данные: выведите в файл mpuzzle.out одно целое число — минимально возможное число баллов.

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

 

mpuzzle.in mpuzzle.out
6

10 1 50 50 20 5

3650

 

 

 

Задача 40. «Большая покупка»

(Заочная олимпиада, высшая лига, 2006-2007)

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

Входные данные: В первой строке файла buying.dat числа K и N (1 <= K <= 1000, 1 <= N <= 10).Во второй строке N целых чисел в пределах от 1 до 1000 — доступные номиналы купюр.

Выходные данные В выходной файл buying.sol нужно вывести минимальное количество купюр, которые необходимо принять, чтобы можно было оплатить любую сумму от 1 до K, или -1 в случае, если этого сделать нельзя.Купюру каждого достоинства можно брать любое количество раз.

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

buying.dat

20 апреля

1 2 5 10

buying.sol

5

 

Задача 41. «Бег с препятствиями»

(Заочная олимпиада, высшая лига, 2006-2007)

Кенгуру находится на старте беговой дорожки. Кенгуру может прыгать на расстояние от 1 до 10 метров. Но чтобы прыгнуть на 10 метров ему нужно хорошенько разогнаться. Благодаря явлению инерции каждый следующий скачок может быть или на 1 метр длиннее или на 1 метр короче предыдущего, также может быть равен предыдущему. Согласно кенгуру не может остановиться в любой момент, а только когда длина предыдущего скачка была равной 1 метра.

На беговой дорожке есть ряд препятствий в виде ям различной ширины.

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

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

Исходные данные:

В первой строке входного потока содержится одно целое число L — длина беговой дорожки в метрах, 1 <= L <= 30000.Во второй строке входного потока содержится L чисел разделенных пробелами, обозначающие состояние беговой дорожки в позициях 1, 2, 3, …, L метров соответственно. «0» обозначает хорошее состояние дорожки, «1» обозначает яму в заданной позиции.Других обозначений нет.

результат:

В первую строку выходного потока вывести единственное целое число — наименьшее время в секундах, за которое кенгуру может достичь финиша при

полной остановки на финише. Если кенгуру вообще не может достичь финиша, вывести «-1».

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

Исходные данные, соответствующие рисунке приведенном выше:

14

0 1 0 0 1 0 0 0 1 1 0 0 0 0

Пример результата:

Результат, который соответствует исходным данным, приведенным выше 7

 

Задача 42. «Государственная угроза»

(Заочная олимпиада, высшая лига, 2006-2007)

Бывший участник олимпиады Петренко (фамилия изменена по этическим соображениям) стал очень богатым и влиятельным человеком, захотел взять под контроль законодательный орган страны — Верховную Раду.

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

Но жадность Петренко хочет, чтобы сформировать большинство, и потратить при этом как можно меньше денег.

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

Входные данные:

В первой строке входного потока содержится число N — количество фракций в Верховной Раде.

В каждой из следующих N строк содержится по два числа P и K — количество депутатов во фракции и сумма средств необходима на подкуп фракции.

Примечание: 1 <= N <= 100, 1 <= K <= 10000.Общее количество депутатов парламента не превышает 10000. Большинство — любое количество депутатов, большая половины общего числа депутатов.

Исходные данные:

В первой строке два числа M — минимальная сумма, необходимая для создания большинства в Верховной Раде, и B — количество фракций, которые необходимо подкупить.

В следующей строке содержится B целых чисел — номера фракций, которые необходимо подкупить.

В случае, когда решений может быть несколько, вывести любой из

них.

 

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

5

27 января

175500

20 44

72200

156450

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

650 2

4 мая

 

 

Задача 43. «Выставка»

(Заочная олимпиада, 2009-2010)

Каждую осень Хмельницкая областная администрация проводит сильськоосподарську выставку, на которую приезжают важные фермеры, чтобы себя показать и на людей посмотреть. На такую ​​выставку поехали наши герои Диетенко и Вампиров со своими кроликами.  Их транспорт имеет ограниченную

грузоподъемность. Вот они задумались над тем, какую минимальную и максимальную суммы они получат, реализовав свой товар. Им известна Е — масса автомобиля не нагруженного, F — полная масса атомобиля, масса одного кролика Ми и его стоимость Рi Помогите им найти максимальную и минимальную суммы, которые они могут получить.

Входные данные: в текстовом файле market.in в первой строке записаны числа E i F 1 <= E <= F <= 10000. Во второй строке — число N 1 <= N <= 500 — количество кроликов, а в следующих N строках пары чисел Ми и Рi 1 <= Pi <= 50000, 1 <= Mi <= 10000, которые разделены пробелом. Все числа натуральные.

Выходные данные: в текстовый файл market.out записать через пробел два числа: максимальную и минимальную суммы. Если автомобиль не может иметь точно заданную вес при условии, что он нагружен заданными кроликами, то вывести «This is impossible.».

Пример 1:

Входной файл: market.in

1000 1100

2

1 января

5 февраля

Выходной файл: market.out

250100

Пример 2:

Входной файл: market.in

1000 2000

1

10 марта

Выходной файл: market.out

This is impossible.

Задача 44. «Областная олимпиада»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт

Областная олимпиада по информатике, это не только испытание для участников. Каждый раз перед командой жюри возникает целый ряд трудных задач. Некоторые из них известны заранее, некоторые возникают в процессе олимпиады, и требуют немедленного решения. Команда жюри состоит из N человек, каждый из которых может выполнять определенный набор функций по разной результативнисттю. Например KAV лучше всего может составить тесты к задачам, SSF — лучше всего подходит на функцию председателя экспертной комиссии. PSS — лучшее разбирается в компьютерных сетях и недопустить возможность доступа с компьютера одного участника к другому, и тому подобное. Каждому члену жюри можно назначить только одну работу. Главнейшая задача каждой олимпиады заключается в том, чтобы председатель жюри RVA распределил обязанности между членами жюри лучшим образом.

Входные данные:

В первой строке содержится целое число N (1 <n <= 100) — количество членов жюри. Далее идет N * N чисел описывающие матрицу работ. Число Aij (1 <= Aij <= 10000) — показывает, с какой ефективнисттю член жюри под номером i выполнит работу под номером j.

Исходные данные:

Выведите единственное число — наибольшее суммарное эффективность, которую можно достичь для заданной олимпиады

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

 

Пример входных данных: Пример выходных данных:
3 20
3 Июнь 8  
1 июля 9  
5 марта 6  

длинная арифметика

 

Задача 1. «Дроби»

(XИИИ областная олимпиада, в 1999 год)

В десятичной записи дроби m / n вычеркнули k-ю цифру после комы.

Сравнить (меньше, больше, ровно) полученное число с дробью m / n.

 

 

Задача 2. «Квадратный корень»

(XIV областная олимпиада, 2000 год)

Напишите программу ROOT. * Которая вычисляет корень квадратный из числа n (0 <n <10 ^ 2000) с точностью k (k <19) десятичных знаков без использования стандартной функции вычисления квадратного корня.

входные данные

В текстовом файле ROOT.DAT через пробел записаны два числа n и k.

Исходные данные

В текстовом файле ROOT.SOL нужно записать единственное число, которое является корнем квадратным числа n с точностью k десятичных знаков.

Пример входных и выходных данных ROOT.DAT ROOT.SOL 64.23 3 8.014

 

Задача 3.

(Заочная олимпиада, 2000-2001)

Рассмотрим все натуральные числа от 1 до N. Сколько раз встречается знак 0 при записи всех этих чисел.

Входные данные: в текстовом файле ZEROES.DAT записано натуральное число N (число должно быть не более 1000 знаков).

Выходные данные: в текстовый файл ZEROES.OUT выведите количество нулей.

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

999

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

189

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

123456

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

58985

 

 

Задача 4. «Crazy frog»

(Заочная олимпиада, высшая лига, 2005-2006)

Юные ученые исследовали поведение нового вида лягушек — «Крейзи Фрогс». Ограничив зону прыжка лягушки числовой прямой, используя микрометр, они получили невероятно интересный результат: каждая лягушка делала два произвольные (различные по длинам) прыжки влево или вправо на числовой прямой, а третий — математически зависел от первых двух. Зависимость была такой: если длины первых прыжков отличались более чем в два раза — «Крейзи Фрог» третий скачок делала (в направлении противоположном суммарного смещения) на длину абсолютной разницы первых двух прыжков, а в противном случае — «Крейзи Фрог» делала «супер прыжок «числовое значение которого равно произведению числовых значений первых двух прыжков. Прыжки вправо считались положительными, а влево — отрицательными. Необходимо разработать программу, которая вычисляет по первым двум прыжкам точное значение третьего прыжка.

В двух строках текстового файла CRAZY.FRG находятся числовые значения соответствующих скачков «Крейзи Фрог» (записаны в метрах). Выведите на экран числовое значение третьего прыжка.

Пример 1 файла CRAZY.FRG:

5

2.002

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

-2.998

Пример 2 файла CRAZY.FRG:

-2

3

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

-6

 

 

Задача 5. «Денежная реформа»

(Заочная олимпиада, высшая лига, 2006-2007)

Правитель двоичной планеты Бинариляндии президент Бинар решил сделать денежную реформу, теперь ценность каждой купюры достоинством в P Бинар будет количество единичных битов в двоичной записи числа P. Оппозиционер Децимиал, который для укрепления связей с планетой Земля уже давно предлагал ввести десятичную систему счисления, а также сменить название планеты на Децимиаляндию и имя президента (на которое, весьма не сообщается) думает что это сильно ударит по его капитала.Он имеет по одной купюре достоинства L, L 1, L 2 … R 1, R Бинар.Вам, как настоящим патриотам десятичной системы счисления необходимо как можно быстрее помочь Децимиалу, и найти какой капитал будет у него после денежной реформы.

Технические требования:

Входной файл: BINARY.IN Выходной файл: BINARY.OUT Ограничение времени: 1 секунда

Входные данные: в единственной строке входного файла BINARY.IN находится два числа L и R (1 ≤ L ≤ R ≤ 10 ^ 50).Числа разделены ровно одним пробелом и не имеют ведущих нулей.

Выходные данные: в файл BINARY.OUT запишите одно число — сумму Бинар Децимиала после денежной реформы.

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

 

BINARY.IN BINARY.OUT
10 января 17

Задача 6. «Ключ-2»

(Заочная олимпиада, первая лига, 2006-2007)

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

Входные данные: в текстовом файле Z2.dat записана строка текста длиной не более, чем 100000 и не менее 2, символами которого являются цифры числа N.

Выходные данные: в текстовый файл Z2.sol записать строку текста с полученным числом.

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

Z2.dat Z2.sol
321 32

2)

 

Z2.dat Z2.sol
123 23

 

 

Задача 7. «Праздник конфет» (Заочная олимпиада, 2010-2011) Лимит времени: 1 с

Лимит памяти: 64 Мбт

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

Входные данные:

Вводятся три натуральных числа через пробел. Каждое из чисел — количество конфет в купцы не превышает 10 ^ 100.

Исходные данные:

Нужно вывести одно целое число — максимальное количество конфет.

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

 

Пример входных данных: Пример выходных данных:
15 октября 12 15

 

жадный алгоритм

 

Задача 1. сумма

(Заочная олимпиада, 2001-2002)

Дано n целых чисел x [1], x [2], …, x [n] (1 <= n <= 100000 — 10000 <= x [i] <= 10000). Найти максимальное значение суммы, которую можно получить добавлением группы последовательных чисел x [i] + x [i + 1] + x [i + 2] + … + x [j- 1] + x [j], (1 < = i <= j <= n).

Во входном потоке содержится число n, а за ним числа x [1], x [2], …, x [n].

Все числа разделены пробелами, поток произвольно разбит на ленты.

В выходной поток вывести одно число — значение максимальной суммы последовательных элементов.

Пример.

Вход: 10 -1 1 2 3 -1 50 -5 6 -100 50

Выход: 56

Задачи для начинающих

 

Задача 1. «Фотоаппарат»

(Заочная олимпиада, первая лига, 2006-2007)

При фотографировании цифровой фотоаппарат создает файл, которому автоматически присваивается имя, что соответствует шаблону F00000.jpg, где вместо 00000 указывается номер снимке (например, F00015.jpg). Фотограф сохраняет эти файлы в одной папке, а если редактирует фотографию, то создает копию файла, добавляя к имени символ подчеркивания «_» и цифру, которая означает номер редакции (например, F00015_3.jpg — третья редакция файла F00015.jpg).

Имея список файлов нужно определить в скольких из них хранятся отредактированы снимки.

Входные данные: в текстовом файле FOTO.DAT записаны имена файлов, отделенные произвольным количеством пробелов.

Выходные данные: в текстовый файл FOTO.SOL вывести одно целое число — количество файлов с отредактированными снимками.

Пример входных данных — текстовый файл FOTO.DAT:

F00001.jpg F00002.jpg F00051_4.jpg F00002.jpg F00001_3.jpg F00007.jpg F99999_8.jpg

Пример выходных данных — текстовый файл FOTO.SOL:

3

 

 

Задача 2. «Снежинки в ноябре»

(Заочная олимпиада, первая лига, 2006-2007)

В ноябре мороз формирует особые снежинки: из кристаллов, имеющих форму отрезков прямой, в виде узора, изображенный на картинке. Радиальные кристаллы последовательно пронумерованы от 0 до 5 и образуют углы 60 градусов. Кристаллы, образующие вложенные шестиугольники, нумеруются от центра снежинки (сам центр имеет номер 0) и крепятся к радиальным кристаллов с единичным шагом.

. .

. .

\ 1/2

\               /

/ \ / \

/ \               / \

/ / \ / \ \

/ / \               / \ \

/ / / \ / 1 \ 2 \ 3 \

… 0               /               /               /               0               \               \               \               3 …

\ \ \ / \ / / /

\ \ \ /               \ / / /

\ \ / \ / /

\ /               \ / /

\ / \ /

\ /               \ /

/ \

/ 5 \ 4

. .

. .

ДЛЯ ТОГО, ЧТОБЫ ПРИ пересмотр схемы отображалась ПРАВИЛЬНО НУЖНО УСТАНОВИТЬ ШРИФТ «FIXEDSYS» ИЛИ

«Lucida Console»

Координаты узла снежинки задают двумя числами (R, N), где R — номер радиального кристалла, а N — номер шестиугольника (0 <= N <= 30000). Каждая снежинка имеет ровно два особых — платиновых — узлы. Кристаллический человечек находится в узле с координатами (a, b) и должен посетить оба платиновые узлы. Он может двигаться только вдоль кристаллов снежинки. Написать программу, которая по координатам стартового двух платиновых узлов определяет длину кратчайшего пути кристаллического

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

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

Выходные данные: в стандартный выходной поток вывести одно число — длину кратчайшего пути кристаллического человечка между этими узлами.

пример:

 

Входные данные: Исходные данные:
1 марта

1 марта

2 февраля

5

 

 

 

Задача 3. «Покер»

(Заочная олимпиада, первая лига, 2006-2007)

Задано пять целых чисел. если:

□ есть пять одинаковых, то вывести «Impossible», иначе;

□ есть четыре одинаковых, то вывести «Four of a Kind», иначе;

□ есть одинаковых 3 и 2, то вывести «Full House», иначе;

□ есть пять последовательных, то вывести «Straight», иначе;

□ есть три одинаковых, то вывести «Three of a Kind», иначе;

□ есть два и два одинаковых, то вывести «Two Pairs», иначе;

□ есть два одинаковых, то вывести «One Pair», иначе;

□ вывести «Nothing».

Ограничение: числа не превышают 100.

Входной файл: poker.in

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

Выходной файл: poker.out

Вывести одну строку — результат анализа.

Пример 1.

 

poker.in poker.out
1 3 9 3 2 One Pair

Пример 2.

 

poker.in poker.out
1 мая 5 4 4 Two Pairs

Пример 3.

 

poker.in poker.out
1 мая 2 4 3 Straight

 

 

 

Задача 4. «Гномы-писатели»

(Заочная олимпиада, первая лига, 2006-2007)

Группа из 11 прогрессивных гномов решила написать пособие по программированию сказочной школы. Чтобы пособие не был слишком грубым, они решили, что каждый напишет не более 200 страниц. Когда работа была закончена, возникает необходимость посчитать, сколько страниц будет книга. Составьте программу, чтобы с известным количеством страниц, которые написал каждый из гномов, определить общее количество страниц.

Входные данные: из стандартного входного потока вводится 11 целых чисел — количества страниц, написанных каждым из участников проекта.

Выходные данные: в стандартный выходной поток вывести одно целое число — общее количество страниц в книге.

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

1 2 3 4 5 6 7 8 200 9 1

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

246

 

 

Задача 5. «Тюль»

(Заочная олимпиада, первая лига, 2006-2007)

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

Входные данные: в первой строке текстового файла Z2.DAT записаны два целых числа D и S, отделенные пробелом — количество ячеек по длине и ширине узора соответственно.В следующих D строках записаны по S цифр: 0, если соответствующая ячейка пуста, 1 — закрашена наполовину, 2 — закрашена полностью. Ни один из размеров узоре не превышает 1000.

Выходные данные: в текстовый файл Z2.SOL вывести слово, состоящее из английских букв: «yes», если узор оптимальный, «no» — в противном случае.

Пример 1 Файл Z2.DAT: 5 июня

1 1 1 1 1 января

1 0 0 0 0 1

0 0 2 2 0 0

1 0 0 0 0 1

1 1 1 1 1 января

Файл Z2.SOL:

no

Пример 2 файла Z2.DAT: 2 3 Создать

1 февраля 2

0 0 0

Файл Z2.SOL:

yes

 

 

Задача 6. «Кролики не только …»

(Заочная олимпиада, первая лига, 2006-2007)

У фермера Вампирова система продажи кроликов базировалась на подсчете средней массы кролика на кролеферме. Если средняя масса превышала некоторое значение, которое известно только фермеру, то фермер Вампиров на всех кроликов с кролефермы смотрел не как на симпатичных пушистых животных, а как на 3-4 кг диетического мяса. Помогите автоматизировать нахождения средней массы кролика на кролеферме. Записывая массу кролика, фермер округлював полученное число, а потому все значения масс у него — это натуральные числа.

Входные данные: в текстовом файле rabbit.dat записаны массы кроликов, разделенных пробелами.Масса одного кролика не превышает 15, а кролеферма в состоянии разместить не более 1000 000 шт. кролей.

Выходные данные: в текстовый файл rabbit.sol записать единое целое (округленное) число, соответствующее средней массе кролика.

пример:

Входной файл: rabbit.dat

1 2 3 4 6 1 5

Выходной файл: rabbit.sol

3

Задача 7. «Цивилизованный рынок»

(Заочная олимпиада, первая лига, 2006-2007)

Анализируя рынок сбыта, фермер Вампиров решил, что ему пора выходить на рынки других районов. Добрые традиции в разведении кроликов у Чемеровецком районе, а потому он задумался, какой породой кроликов завоевывать новый рынок. Различных пород на его кролеферме было всего 10. Дорогие друзья ему посоветовали: чем больше средняя масса кролика в породе, тем лучше. Помогите автоматизировать нахождения номера породы, из которой фермер будет выходить на новый рынок. Запись, сделал фермер, имеет следующую структуру: первое число -это масса кролика, через пробел — номер породы, далее через пробел записано массу следующего кролика, а через пробел номер его породы и т.д. Фермер округлював значения масс, а потому все значения в него — это натуральные числа.

Входные данные: в текстовом файле market.in через пробел записаны массы кроликов и номера пород.Масса одного кролика не превышает 15, а кролеферма в состоянии разместить не более 1000 000 шт. кролей.

Выходные данные: в текстовый файл market.out записать одно число, соответствующее номеру породы с которой нужно завоевывать рынок.

пример:

Входной файл: market.in

1 6 2 3 4 6 3 1 2 3 4 3 6 6

Выходной файл: market.out

6

 

 

Задача 8. «Особый день»

(Заочная олимпиада, первая лига, 2006-2007)

Фермер Петр Диетенко благодаря своему успешному бизнесу в кролиководстве стал известным далеко за пределами Чемеровеччины. У Петра было два радости в жизни. Первая — это когда увеличивался приплод на собственной ферме, и вторая — когда происходил падеж в конкурента Вампирова. для контроля по

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

Входные данные: в стандартном входном потоке, по одному в строке, размещенная определенное количество целых неотрицательных чисел не больше 1000, определяющие ежедневный приплод кролефермы Диетенка.Количество чисел не превышает 365 (будем считать, что наши действия могут происходить в конце этого года).

Выходные данные: в стандартный выходной поток вывести сокращенную английское название особого дня.Например: Mon, Tue, Wed, Thu, Fri, Sat, Sun (Перечень дней идет от понедельника до воскресенья в порядке их следования). Если дней с максимальным приплодом несколько, то вывести тот, что является первым в перечне.

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

2

9

3

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

Tue

Примечание. Наибольшее значение в перечне 9. Его порядковый номер 2 и это второй день 2007 года, приходится на вторник.

 

Задача 9. «Мини-шахматы»

(Заочная олимпиада, первая лига, 2006-2007)

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

буквами от ‘A’ до ‘H’, строки — цифрами от 1 до 8; нумерация начинается с нижнего левого угла. Отличия от обычных шахмат:

а) фигур гораздо меньше (король и два пешки одного цвета и слон другого);

б) пешки могут стоять и в крайних рядах.

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

Входные данные: в первой строке текстового файла chess.in записаны два

символы — буква строки и номер столбца, на пересечении которых находится слон в следующих трех строках, по 2 символа в каждом — координаты короля и двух пешек соответственно.

Выходные данные: в первую строку текстового файла chess.out вывести одно число — количество фигур, которым угрожает слон, или NO, если слон не угрожает одной фигуре.

Пример файла chess.in:

C3 A1 D2 D3

Пример файла chess.out:

2

 

 

Задача 10. «Подкидной»

(Заочная олимпиада, первая лига, 2006-2007)

В мини-шахматах произошла патовая ситуация, и фермеры решили поиграть в карты.

 

Карта имеет две характеристики: ранг R (6,7,8,9,10, J, Q, K, A) и масть M (P, T, C, B). Карты имеют старшинство соответственно рангу: шестерка (6) — самая молодая карта, туз (А) — самая старшая. Покрыть карту можно или старшей картой такой же масти, или картой козырной масти, если карта, которую таят, сама не является козырной — в таком случае ее можно покрыть только старшим козырем ..

Определить, кроет карта (R1, M1) карту (R2, M2), если козырь K.

Входные данные: в первой строке файла CARDS.DAT записан символ K — козырная масть; в следующих строках — символы R1, M1, R2, M2, каждый в отдельной строке — ранг и масть первой и второй карт соответственно.

 

Выходные данные: в первую строку текстового файла CARDS.RES вывести

YES, если первая карта покрывает вторую, или NO в противном случае.

Пример файла CARDS.DAT:

PAT 6 C

Пример файла CARDS.RES:

NO

комбинаторика

 

Задача 1.

(IV областная олимпиада, 1990 год)

Жители некоторого племени говорят на каком стран ном языке: любое сказанное слово они образуют из всех букв некоторого алфавита, состоящего из n букв. Слова, в которых порядок прохождения букв совпадает, считаются одинаковыми, если же в двух словах порядок следования букв не совпадает, то такие слова считаются разными.

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

Можете ли Вы справиться с таким же заданием, но так, чтобы наверняка словарю племени были занесены все разные слова, употребляемые жителями?

 

Задача 2. «Перестановка»

(XVII областная олимпиада, 2003 год)

Таблицей инверсий заданной перестановки чисел от 1 до N является массив, K-й элемент которого равен количеству элементов крупнее K, стоящих в перестановке слева от K. Так для перестановки 3 1 5 2 апреля таблицей инверсий

будет 1 2 0 1 0. Нужно построить алгоритм и реализовать его в виде программы PERM.PAS (BAS или CPP), что прочтет входные данные из файла PERM.DAT, по данной таблице инверсий восстановит перестановку и выведет ее в файл PERM.SOL

В первой строке файла PERM.DAT записано число N.

Во втором — N чисел (таблица инверсий), разделенных пробелом. (1 <= N <= 100)

В файл PERM.SOL необходимо записать искомую перестановку.

Пример: PERM.DAT 5

1 2 0 1 0

 

 

PERM.SOL 3 1 5 4 февраля

 

Задача 3. «Олимпиада и хаос»

(XX областная олимпиада, 2006 год)

Для проведения соревнований по программированию выделено N рабочих мест, которые пронумерованы числами от 1 до N. Каждому участнику соревнований выдан номер его рабочего места. После того, как все участники заняли рабочие места оказалось, что никто из участников не сидит на своем месте. Жюри заинтересовал вопрос: сколько существует вариантов размещения участников на рабочих местах таких, что никто не находится на своем месте. Помогите жюри найти ответ на этот вопрос.

Входные данные: в первой ленте входного потока содержится одно число — количество рабочих мест.Это число больше 0 и не превышает 100.

Выходные данные: в первую ленту исходного потока вывести одно число — количество возможных размещений участников на рабочих местах, таких, что никто из них не находится на своем месте.

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

Пример выходных данных, соответствующих входным 2

Задача 4.

(XXIII областная олимпиада, 2009 год)

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

 

Задача 5.

(Заочная олимпиада, 2000-2001)

Дано поле в клеточку размером 3хN. Подсчитайте, сколькими способами можно полностью заполнить данное поле прямоугольниками размером 2х1.

Входные данные: в текстовом файле ‘POLE.DAT «в первой строке число N (0 <= N <= 60).

Выходные данные: в первую строку текстового файла «POLE.SOL» вывести количество комбинаций расположения прямоугольников на данном поле.

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

2

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

3

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

3

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

 

 

Задача 6. «Номер перестановки»

(Заочная олимпиада, 2000-2001)

Возьмем все возможные строки, которые можно построить из символов «0», «1», «2», «3», «4», «5», «6», «7», «8», «9», «A», «B», если брать каждый из них по одному разу. Упорядочим эти строки по алфавиту и пронумеруем их по порядку начиная с единицы. Первой будет идти строка 0123456789AB, за ней 0123456789BA, затем 012345678A9B и т.д. … … … … … …., Последней BA9876543210

Написать программу, которая выдает номер строки в этом списке.  Входные данные: в

первой строке входного потока содержится 12-ти символьная строка.Результаты вывести в выходной поток целое число, равное номеру этого строки.

 

Задача 7.

(Заочная олимпиада, 2000-2001)

Предположим, что имя файла может состоять только из маленьких букв латинского алфавита, цифр 0 .. 9 и знака подчеркивания «_», а также иметь длину от 1 до 8 символов. Маска файла может в добавок иметь символы «?»И» * «и ее длина тоже не должна превышать 8 символов (если длина маски будет более 8 символов, то могут начаться какие-то аномальные явление)»?»Означает, что на данном месте должен быть один из допустимых символов.» * «Означает, что на данном месте может находиться любая допустимая последовательность символов. По заданной маске определите, сколько имен файлов может ей отвечать.

Выходные данные: в первой строке входного потока содержится маска.

В первую строку выходного потока необходимо вывести искомое количество имен файлов.

 

Задача 8. «Следующая перестановка»

(Заочная олимпиада, высшая лига, 2005-2006)

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

Задача: напишите программу, определяющую, какая лента будет следующей за данной в этом алфавитном списке.Если данная лента является последней в этом списке, то следует вывести первую строчку списка.

Входные данные: входной поток содержит единую данную ленту.

Выходные данные: вывести в выходной поток единую ленту, которую должна найти программа.

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

FDHF

Пример выходных данных, соответствующих входным:

FFDH

 

 

Задача 9. «Инверсия»

(Заочная олимпиада, первая лига, 2006-2007)

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

Примечание.В перестановке a [1], a [2], …, a [n] первых n натуральных чисел a [k] и a [m] образуют инверсию, если a [k]> a [m] и k <m .

Входные данные. в единственной строке файла inverse.dat находятся числа N, K

(1 <= N <= 18 0 <= K <= 1000).

Исходные данные. в файл inverse.sol нужно вывести количество перестановок, в которых ровно K инверсий.

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

inverse.dat

2 апреля

inverse.sol

5

 

 

Задача 10. «Бирка»

(Заочная олимпиада, первая лига, 2006-2007)

У короля Лапландии есть в наличии разноцветные ленты (всего М разных цветов). Он задумался (и такое бывает) хватит ему этих лент, чтобы однозначно обозначить воинов королевской гвардии. помогите

королю удовлетворить эту прихоть. Бирка, которую получает воин, содержит по одной полоске всех цветов и порядок следования цветов у каждого из воинов — уникален.

Ограничение: 2 <= M <= 8; цвета обозначены символами латинского алфавита.

Входной файл: birka.in

В единственной строке которого, записана строка, каждый из М символов которого обозначает цвет одной ленты.

Выходной файл: birka.out

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

пример:

 

birka.in birka.out
IOX 6

XOI OIX IXO XIO OXI IOX

 

 

 

Задача 11. «Cпираль»

(Заочная олимпиада, высшая лига, 2006-2007)

Спираль — это ломаная не нулевой длины без самопересечений, вершины которой расположены в точках с целыми координатами на плоскости. Каждое последующее звено ломаной должна быть повернута относительно предыдущей на 90? по часовой стрелке.

Рассмотрим прямоугольник N на M (1≤ N, M ≤20).Пусть для каждой спирали ее первая вершина совпадает с левой верхней вершиной прямоугольника, а вторая лежит на верхней стороне прямоугольника.

Новый премьер-министр в условиях энергетического кризиса хочет наладить выпуск спиралей. Его интересует количество таких спиралей.

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

Входные данные: текстовый файл SPIRAL.DAT содержит два целых числа N и M.

Выходные данные: текстовый файл SPIRAL.SOL должна содержать одно число — количество найденных спиралей.

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

 

SPIRAL.DAT SPIRAL.SOL
2 февраля 16

 

 

Задача 12. «Строка»

(Заочная олимпиада, 2008-2009) Имя входного файла: string.in

Имя выходного файла: string.out

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

Входные данные: в единственной строке входного файла записано слово, состоящее из маленьких букв латинского алфавита. Гарантируется, что его длина не будет превышать 100 000 и не будет меньше 2 символа.

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

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

string.in adbsab string.out 5 Февраля

 

Задача 13. «Домино своими руками»

(Заочная олимпиада, 2010-2011)

Лимит времени: 0.5 с Лимит памяти: 64 Мбт

На олимпиаду по трудовому обучению Василько решил сделать кости для игры в домино (шахматы Василько изготавливал прошлого года). Креативность ученика не позволяла ему взяться за изготовление стандартного набора с максимальным количеством точек на одной половине кости равной 6. Изготовление точек на костях оказалось достаточно трудоемкой работой и Василько решил подсчитать заранее сколько точек будут иметь нестандартные наборы домино. Например, если максимальное количество точек будет равна 2, то надо будет сделать всего 12 точек на комплект. Маловато для задуманного проекта … Если взять 3, то … Василько устал считать и написал программу, которая определяет количество точек в разных наборах домино. Попробуйте и вы написать программу, которая будет определять количество точек для

различных наборов костей домино с максимальным количеством точек не более N (1 <= N <= 10000).

Входные данные:

Стандартный входной поток содержит число N.

Исходные данные:

В стандартный выходной поток вывести количество точек соответствующего набора домино.

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

 

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

пояснение:

Данный набор будет содержать такие кости: 0-0, 0-1, 0-2, 1-1, 1-2, 2-2. всего есть

12 точек.

 

массивы

 

Задача 1.

(I областная олимпиада, 1987)

В прямоугольной целочисленной таблицы А [1: 100,1: 50] все числа разные. В каждой строке выбирается максимальный элемент, затем среди этих чисел выбирается минимальный. С помощью алгоритма, записанного на алгоритмическом языке, найти это минимальное число и номер строки в котором оно находится.

 

Задача 2.

(I и областная олимпиада, 1988 год)

Фрагменты таблицы X [1: N] представляют собой последовательность ее элементов X [k], X [k + 1], X [k + 2], …, X [l-1], X [l], размещенных последовательно в таблице Х, при 1 kl N. Написать алгоритм, который определяет начальный и конечный номера самого длинного монотонного фрагмента таблицы Х. Монотонным фрагментом назовем такой фрагмент, в котором значение Х монотонно растут с ростом индекса или монотонно спадает или равны между собой.

 

Задача 3.

(I и областная олимпиада, 1988 год)

Даны таблицы Х [1: 100] и Y [1: 100]. Записать алгоритм, меняющий последовательно местами значения элементов X [k] и Y [k] этих таблиц для k = 1, …, 100 по следующему правилу: X [k] принимает значение менее с X [k], Y [k ], а Y [k] принимает значение большего из этих элементов.

 

Задача 4.

(I и областная олимпиада, 1988 год)

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

Задача 5.

(IV областная олимпиада, 1990 год)

Данная таблица n целых чисел. Разработать алгоритм, позволяющий найти в таблице «симметричный» часть наибольшей длины подряд элементов.

В «симметричной» части первый элемент равен последнему, второй — предпоследнем и т.д.

 

Задача 6. «Заполнение по диагоналям»

(V областная олимпиада, 1991 год)

Составить алгоритм заполнения двухмерной таблицы A [1: n, 1: n] по диагоналям с северо-востока на юго-запад числами 1, 2, …, n 2, начиная с северо-западного угла таблицы.

 

Задача 7. «Циклическая перестановка»

(VI областная олимпиада, 1992 год)

Составить алгоритм циклической перестановки элементов таблицы В [1: 100], при которой В [i] перемещается в B [i + 1], а B [100] перемещается в B [1].

 

Задача 8. «Разные числа»

(VII областная олимпиада, 1993 год)

Дано числовую таблицу A [1: m].Подсчитать, сколько различных чисел в таблице. Например, в таблице 5, 7, 5, 4 различных чисел три (5, 7 и 4).

 

Задача 9. «Симметричный фрагмент таблицы»

(VII областная олимпиада, 1993 год)

Задано таблицу натуральных чисел A [1: N].Найти в таблице фрагмент максимальной длины, в котором первое число равно последнем, второе — предпоследнем и т.д. Напечатать этот фрагмент таблицы.

Задача 10. «Особые элементы»

(VII областная олимпиада, 1993 год)

Задано прямоугольную таблицу B [1: m, 1: n].Один из элементов этой таблицы назовем «особым», если он является одновременно крупнейшим в своей строке и наименьшим в своей колонке. Найти все «особые» элементы таблицы, или вывести «нет», если их нет.

 

Задача 11. Обработка фотографий из космоса

(VIII областная олимпиада, 1994 год)

Компьютер превратил фотографию части поверхности планеты, сделанную из космического аппарата, в двухмерную таблицу Map [1: M, 1: N], элементы которой — цифры 0 (суша) и 1 (вода).

Есть 4 типа поверхности суши (материк, остров, полуостров и берег) и три типа поверхности воды (море, озеро и залив). Тип каждой клетки можно определить в зависимости от того, к каким типам было однозначно отнесены ранее некоторые из четырех соседних по вертикали и горизонтали клеток:

Тип 2 — материк-клетка суши, окруженная четырьмя клетками суши. Тип 3 — остров-клетка суши, окруженная четырьмя клетками воды.

Тип 4 — полуостров-клетка суши, имеет 3 соседних клетки воды, или 2 соседних клетки воды и> = 1 клетки полуострова, или 1 соседнюю клетку воды и> = 2 клеток полуострова.

Тип 5 — берег-клетка суши, не относится к типам 2-4.

Тип 6 — море-клетка воды, имеет хотя бы одну соседнюю клетку моря.

Тип 7 — залив-клетка моря, имеет 2 или 3 соседних клетки суши, или 4 соседние клетки залива, или 1 соседнюю клетку суши и не менее 2 клеток залива.

Тип 8 — озеро-клетка воды не относится к типам 6, 7.

Считается, что две клетки типа 4 относятся к одному полуострова, если между ними можно пройти по суше, переходя на соседние клетки типа 4 по горизонтали или вертикали. Таким же образом две клетки типа 7 принадлежат

в одну залива, если между ними можно проплыть по воде, переплывая на соседние клетки типа 7 по горизонтали или вертикали. Две клетки типа 8 принадлежат к одному озера, если между ними можно проплыть по воде, переплывая на соседнюю клетку типа 8 по горизонтали или вертикали. Последние строки и столбцы таблицы занимает море.

ЗАДАЧИ: написать программу, для заданной таблицы-карты:

1. Определит номер типа каждой ее клетки.

2. Вычислит количества островов, полуостровов, озер и заливов на карте.

 

 

Задача 12.

(X областная олимпиада, 1996 год)

Курсы К иностранных валют по отношению к украинской рубля за N дней содержатся в таблице S. S [i, j] — курс валюты j в день и. На сколько процентов максимально можно было бы увеличить за эти дни капитал, играя на изменении курсов этих валют? Деньги можно как угодно распределять в рубли и иностранную валюту. Начальный капитал — в рублях; конечный также должен быть в рублях. Курсы продажи и покупки считаются одинаковыми. Длинную арифметику нельзя не реализовывать. Суммы денег считайте действительными числами.

Если задача решается практически, и компьютер позволяет работать с файлами, предусмотрите такой формат данных. Входные данные находятся в файле CURRENCY.INP. Первая строка файла содержит количество тестов. Первая строка каждого теста содержит 2 числа: количество валют К количество дней N. Следующие N строк по К натуральных чисел — курсы валют. Для каждого теста вычислить указанный процент и вывести его в файл CURRENCY.OUT. При невозможности работы с файлами обеспечьте ввод данных с клавиатуры.

Задача 13. «Микроорганизмы»

(X и областная олимпиада, 1997 год)

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

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

Дано: прямоугольное фото размером mxn клiтинок, часть которых обозначено.

Получить: количество организмов на фотоснимки.

 

 

Задача 14. «Футбольная таблица»

(XVI областная олимпиада, 2002 год)

В первой строке файла FOOTBALL.DAT содержатся два числа, N — количество команд и M — количество сыгранных матчей. В следующих N строках — названия команд. Каждый матч описан в файле *.DAT, где * — порядковый номер матча. (1.DAT, 2.DAT, …). Файл описывающий каждый матч имеет следующую структуру: Состав команд описывается двумя последовательными блоками. В первой строке блока записано название команды, а во втором — число P — количество игроков, заявленных на матч этой командой. В следующих P строках — фамилии игроков. Далее записано число K — количество забитых в матче голов. Следующие K строк содержат фамилии игроков, забивших голы.

Построить турнирную таблицу по правилам: Команда, набравшая больше очков, должна идти раньше в таблице. При равенстве очков, первой будет идти команда у которой больше побед, а если этот параметр тоже будет равен, то упорядочение должно быть в алфавитном порядке. Записать в файл TABLE.REP каждая строка таблицы следующим образом: Сначала печатается название команды, далее следует N блоков такого формата «A: B», «-» или «X». пусть номер

текущей команды Num1, а номер текущего блока Num2. «X» — ставится, если Num1 = Num2. «A: B» — результат игры между командами Num1 и Num2.  (A, B — количество голов забитых командой Num1 и Num2 соответственно). «-» — если Num1 и Num2 еще не играли между собой. В конце строки — общее количество очков, которые набрала команда. Первый блок должен начинаться в строке с позиции под номером 25. За победу начисляется 3 очка, за ничью 1, за проигрыш 0. Ограничение: 2 <= N, P <= 20; 0 <= K <= 10. Названия команд и фамилии игроков состоят не более 20 латинских букв и цифр. Команды играют между собой не более одного матча.

FOOTBALL.DAT 2 марта

BALLERS FOOTERS PROGRAMMERS

 

1. DAT FOOTERS 4

Player1 Player2 Player3 Player4 BALLERS 5

Gamer1 Gamer2 Gamer3 Gamer4 Gamer5 3

Player1 GAMER3 PLAYER3

 

2. DAT PROGRAMMERS 4

Olymp1 Olymp2 Olymp3 Olymp4 FOOTERS 3

Player1 Cook Lamberto 2

Olymp3 Olymp2

 

TABLE.REP FOOTERS X 0: 2 2: 3 января

PROGRAMMERS 2: 0 X — 3

BALLERS 1: 2 — X 0

 

 

Задача 15.

(Заочная олимпиада, 2000-2001)

Дано размерность квадратной матрицы N, которую заполнили числами от 1 до N 2 по спирали.

Выясните, какое число находится в позиции [R, C], где R — номер строки, C

— номер столбца.

Входные данные: первая строка — число N (1 <N <= 100000) во второй строке через пробел числа R и C.

Выходные данные: соответствующее число.

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

6

1 февраля

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

20

 

 

Задача 16. «Зигзаг»

(Заочная олимпиада, 2001-2002)

Квадратную матрицу размерностью NxN (N <= 40000) заполнено натуральными числами следующим образом:

для N = 4 для N = 5
3 января 10 апреля 1 3 4 10 11
2 мая 9 ноября 2 5 9 12 19
6 8 12 15 6 8 13 18 20
7 13 14 16 7 14 17 21 24
  15 16 22 23 25

По данным натуральными числами L <= N (номер строки) i C <= N (номер столбца) указать число, которое находится на пересечении L-й строки и С-го столбика.

Входные данные: в файле INPUT.DAT находится три числа N, L i C (через пробел).

Выходные данные: вывести в файл OUTPUT.DAT число, которое находится на пересечении L-й строки и С-го столбика.

Пример 1. INPUT.DAT 3 апреля 3 Пример 2. INPUT.DAT 40 40 40 Пример 3. INPUT.DAT 43210 1234 5678

OUTPUT.DAT 12 OUTPUT.DAT 1600 OUTPUT.DAT 23878739

 

 

 

Задача 17.

(Заочная олимпиада, 2001-2002)

Математику Дифуру Интеграловичу необходимо перемножить N прямоугольных матриц.

Известно, что для вычисления произведения двух матриц размерами M x N и N x K необходимо выполнить M * N * K элементарных операций, а результирующая матрица имеет размер M x K.

Матрицы-множители нельзя менять местами, но можно изменять порядок умножения матриц, например

при исчислении А (5х50) * В (50х2) * С (2 x 1) запрещается А * С * В, но

не возбраняется А * (В * С)

В случае А * В * С количество операций 500 + 10 = 510, а в случае А * (В * С) количество операций 100 + 250 = 350.

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

Входные данные:

В первом строке файла MATRIX.DAT записано число N — количество прямоугольных матриц.

В следующих N строках по два числа через пробел: размеры матриц. Количество матриц и их размеры не превышают числа 50.

Исходные данные:

В N-1 строках файла MATRIX.SOL по одному числу — номера (начальные) операторов умножения.

Задача 18. «Площадка под стадион»

(Заочная олимпиада, 2002-2003)

Жители небольшого провинциального городка Healthcity, что размещено не очень далеко от конца света любили две вещи: спорт и природу. Решив однажды построить стадион они были шокированы — вокруг городка находилось множество деревьев, которые они, по понятным причинам, не могли погубить. Поиск подходящего для строительства площадки затянулся и мэр обратился к аэрокосмического агентсва по плану местности с отметками мест, где растут деревья. План был получен. Он был разбит на квадраты размерности N, которые могли иметь такой вид:

0 0 -1 -1 0 -1

0 -1 -1 -1 1 2

-1 -1 0 1 3 4

-1 0 4 4 -1 -1

-1 -1 6 4 -1 -1

0 0 -1 0 0 -1

Отрицательными единичками обозначены места нахождения деревьев, а положительные числа указывают указывают на свободные от деревьев места и среднюю высоту участка относительно низкой точки на карте. Ваша задача: помочь жителям города Healthcity улучшить здоровье и сохранить природу, то есть составить программу выбора самого площадки для будущего стадиона. Участок должен иметь прямоугольную форму (квадрат является частным случаем прямоугольника). Из двух равных по площади участков следует выбрать ту, затраты труда по подготовке которой будать минимальными.

Например, для нашего плана равные площади имеют два участка: (2,5) и (4,3). Координаты задают верхние левые углы. Площади одинаковые (4 шт), но второй вариант предпочтительнее, поскольку лишние только 2 единицы почвы (координата 5,3), а в первом случае для выхода на этот уровень мы должны переместить 1 Ед. с (3,5) в (2,5). И хотя теперь первая равнина (2,2,2,4) равна по объема

 

работ второй (4,4,6,4) — вторая более экономически выгодна потому что здесь не осуществлялись предыдущие перемещения.

Примеры сравнения равнин:

(2,2,2,3) лучше, чем (2,2,2,1) — единицу почвы лучше вывести как завезти;

(1,2,3,4) равно (5,6,7,8) — в таком случае выводить первую найденную при обходе с верхнего левого угла карты.

Технические условия:

Входной текстовый файл STADION.DAT в первой строке содержит число 0 <N <101. В следующих N строках содержится по N целых чисел через пробел.

Выходной файл STADION.SOL в первой строке содержит два целых числа разделенных пробелом — координаты левого верхнего угла прямоугольного участка; второй строка содержит одно целое число — площадь участка; третий одно целое число — количество единиц почвы для перемещения.

Для нашего примера исходный файл должен содержать: 4 марта

4

2

 

 

Задача 19. «Satellite Photographs»

(Заочная олимпиада, высшая лига, 2005-2006)

Новый украинский фермер, обремененный деньгами и избыточной образованием, желая получать сверхвысокие прибыли заказал космическому агентству спутниковые фотографии своей фермы и достаточно обширных земель, на которых он собирался пасти скот. Его интересовало наиболее непрерывное пастбище. Пастбище назовем непрерывным, если его точки могут быть соединении вертикально или горизонтально. Каждое фото размером W x H пикселей (есть такое слово в украинском языке) состоит из символов «*» — пастбище и «.» НЕ пастбище.

Входные данные:

В первой строке входного файла Satpix.in содержится два натуральных числа W и H (1≤W≤80, 1≤H≤1000), разделенных пробелом.Следующие H строк содержат описание фото: каждая строка состоит из W символов «*» или «.».

Исходные данные:

Файл Satpix.out содержит единственное число — величину наибольшего непрерывного пастбища.

Например:

 

Satpix. in Satpix. out
10 Мая 16
..* …..**  
.** ..*****  
.* …* ….  
..****.***  
..****.***  

 

 

 

Задача 20.

(Заочная олимпиада, первая лига, 2005-2006)

Рота численностью в N солдат выстроилась на плацу в строй по М солдат в шеренге.Строй состоит из шеренг и колонн. Последняя шеренга может быть не полной. В каждой колонне определили самого солдата, а среди них — самого низкого. Его кодовое имя — S-007.В каждой шеренге определили самого низкого, а среди них — высшего солдата. Его кодовое имя — S-001.Определить, кто выше ростом — самый низкий среди высоких (S-007) или высокий среди низких (S-001).

Входные данные В первой строке текстового файла rota.dat записаны два целых числа, разделенных пробелом: N — количество солдат во рту, и М — количество солдат в шеренге.В следующих строках записаны по М целых чисел, разделенных пробелами — рост солдат очередной шеренги в сантиметрах.

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

Пример 1:

 

rota.dat rota.sol
12 апреля S-007
168175181172  
193165170184  
183177174168  

Пример 2:

 

rota.dat rota.sol
11 марта
190190190  
190190190  
190190190  
190190  

 

 

 

Задача 21. «Грядки»

(Заочная олимпиада, первая лига, 2006-2007)

Садовый участок, имеющий прямоугольную форму и разделена на квадратные ячейки со стороной 1 метр, имеет ширину n и длину m метров.На этом участке вскопана грядки прямоугольной формы. Никакие две грядки не пересекаются и не касаются друг друга ни вертикальной, ни горизонтальной сторонами ячеек (касания грядок углами клеток допускается).

Подсчитайте количество грядок на садовом участке. Заданные ограничения:

Размеры участка удовлетворяют условиям 1 <= n, m <= 100.

Входные и выходные данные:

В первой строке выходного файла Z2.dat заданные два числа: n и m, разделенные одним или несколькими пробелами.

Далее следуют n строк по m символов.Символ «1» обозначает территорию грядки. Символ «0» соответствует нескопаний территории. Других значений во входном файле нет.

Вывести в выходной файл Z2.sol количество грядок на садовом участке.

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

6 мая

010000

001110

001110

000000

111100

Z2.sol

3

 

 

Задача 22. «День Святого Николая»

(Заочная олимпиада, первая лига, 2006-2007)

Ко дню Святого Николая осталось чуть больше месяца. Возрождая традиции и ради рекламы своего праздника, Святой Николай устроил соревнования с Дедом Морозом, кто заработает больше детских улыбок. Конечно, улыбки дети отдают взамен подарков. Однажды утром дети имеют хорошее настроение и дарят больше улыбок, а другого утра их заставляют застилать кровать — и улыбок, соответственно, меньше, но каждое утро количество улыбок за один подарок не менее 1 и не более 100. Стартует Святой Николай утром с одного подарка, но каждую ночь он успевает изготовить еще 1 (подарки можно раздавать только утром, а изготавливать только ночью). Соревнования долгосрочное и срок его окончания Святой Николай оставил в

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

Входные данные: В текстовом файле Usmishka.dat находится последовательность целых чисел, записанных через пробел — прогноз количества улыбок, которые можно получить за один подарок, каждое утро периода соревнований.

Выходные данные: В текстовом файл Usmishka.sol вывести одно целое число — количество улыбок, которые получил Святой Николай за весь период соревнования.

Пример 1:

 

Usmishka.dat Usmishka.sol
5 марта 2 12

Пример 2:

 

Usmishka.dat Usmishka.sol
2 1 1 1 1 6

 

 

 

Задача 23. «Таблица»

(Заочная олимпиада, первая лига, 2006-2007)

Элементы квадратной таблицы нумеруются следующим образом:

 

  j
 

i

1 2 5 10
4 3 6 11
9 8 7 12

  16 15 14 13

По заданным k (1 <= k <= 2116000000) найти его место в таблице i, j.

Нумерация строк и столбцов таблицы начинается с единицы.

Входные данные: из стандартного входного потока вводится заданное число k.

Выходные данные: в стандартный выходной поток вывести два числа — номера строки и столбца таблицы, на пересечении которых находится число k.

пример:

 

Входные данные: Исходные данные:
12 4 марта

 

 

 

Задача 24. «Проблема королей»

(Заочная олимпиада, высшая лига, 2006-2007)

На шахматной доске размером N на M (3 <= N, M <= 30) стоят два одиноких короли.Наши короли необычные шахматные, а загадочные и поэтому движутся одновременно по заданной для каждого программой. Но исходное положение каждого короля не является фиксированным и они не совпадают.

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

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

Входные данные: текстовый файл KINGS.IN содержит три строки: в первом записаны два целых числа N и M — размеры шахматной доски; во втором программа — последовательность ходов первого короля; в третьем программа для второго короля.

Поскольку короли загадочные, то программа содержит не более 5 команд, каждая из которых это символ, указывающий перемещение на одну из 8 соседних ячеек:

U — на одну клетку вверх;

E — на одну клетку вверх-вправо;

R — на одну ячейку вправо;

F — на одну клетку вниз-вправо;

D — на одну клетку вниз;

G — на одну клетку вниз-влево;

L — на одну ячейку влево;

H — на одну ячейку влево-вверх.

Выходные данные: текстовый файл KINGS.OUT должен содержать N строк по М чисел в каждом.Каждое число — это ответ на поставленную задачу для данной ячейки. Если для данной ячейки последовательность ходов первого короля всегда приводит к выходу за пределы доски, то вывести -1.

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

 

KINGS.IN KINGS.OUT
3 марта

DDR GDD

1 января -1

1 января -1

-1 -1 -1

 

 

 

Задача 25. «Кролики-3»

(Заочная олимпиада, первая лига, 2006-2007)

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

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

На месте норы находится число, указывающее на клетку в которую ведет данная

нора.

 

      3  
         
  4      
5        
  2      

Технические условия. Во входном файле rabbits.dat в первой строке находится три целых числа: N (1 <N <100) — размер квадратной ограждения; R, C — строка и столбец условной клетки ограждения, где находится кролик.В следующих N строки записано по N чисел: 0 указывает на отсутствие норы, другое число — на нору с переходом в клетку с таким номером.В выходной файл rabbits.sol в случае, когда кролик поест моркови, вывести «YES» в первой строке количество норок во втором.При отсутствии пути вывести в первой строке «NO», а во втором — номер последней клетки, к которой может пройти кролик.

входные данные

5 1 1

0 0 0 3 0

0 0 0 0 0

0 4 0 0 0

5 0 0 0 0

0 2 0 0 0

Исходные данные

YES 3

Задача 26. «Головоломка»

(Заочная олимпиада, высшая лига, 2006-2007)

В стране Олимпия популярна следующая головоломка. Заданная матрица M x N натуральных чисел.За один шаг выбирается некоторое строку с номером R, столбик с номером C, и ко всем числам, которые находятся на пересечении строки с номером не превышает R, и колонки, что по телефону не превышает C, добавляется единица.

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

Входные данные.В первой строке файла matrix.dat записаны числа M и N — размеры матрицы (1 <= M, N <= 50).В следующих M строках по N натуральных чисел, не превышающих 50 — элементы матрицы. j — то число в (i + 1) — й строке соответствует элементу на пересечении i — й строки и j — го столбца матрицы.Исходные данные.В файл matrix.sol вывести минимальное количество операций,

которая необходима для того, чтобы все числа матрицы стали нечетными.

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

matrix.dat

3 марта

1 апреля 8

4 марта 2

2 1 июля

matrix.sol

2

Примечание: Матрицу в примере можно превращать следующим образом:

Задача 27. «Кролик-холостяк»

(Заочная олимпиада, первая лига, 2006-2007)

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

Входные данные: в текстовом файле unmarried.dat через пробел записаны номера кроликов, которые являются натуральными числами и не превышают 2 • 10 ^ 9.

Выходные данные: в текстовый файл unmarried.sol записать единственное число — номер семьи с нечетным количеством кроликов или номер кролика, у которого нет пары.

Пример 1:

Входной файл: unmarried.dat

1 6 2 3 4 6 3 1 2 3 4 3 6

Выходной файл: unmarried.sol

6

Пример 2:

Входной файл: unmarried.dat

1 6 2 3 4 3 2 3 4 3 6

Выходной файл: unmarried.sol

1

 

 

Задача 28. «Stack Attack (remix)»

(Заочная олимпиада, первая лига, 2006-2007)

Дети фермеров занялись программированием и решили написать программу-игру «Stack Attack (remix)».Игровое поле Stack Attack представляет собой таблицу 6 * 8 (6 строк, 8 столбцов).В каждой ячейке можно разместить квадратик одного из четырех цветов: зеленый, синий, красный, желтый.

 

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

Входные данные: в каждой строке текстового файла protokol.txt записано 8 чисел через пробел:

1 — обозначает зеленый квадратик, 2 — синий, 3 — красный, 4 — желтый, 0 — пустая ячейка.

Выходные данные: в первую строку файла result.txt вывести единственное число — количество баллов, набранных игроком.

Пример файла protokol.txt:

1 2 2 2 2 3 3 1

3 0 1 4 3 4 3 2

3 0 2 2 2 4 3 1

2 0 3 3 2 4 1 0

1 0 1 0 0 2 2 0

4 0 2 0 0 0 0 0

0 0 1 0 0 0 0 0

Пример файла result.txt:

123

 

 

Задача 29. «Уникальная цена»

(Заочная олимпиада, 2009-2010)

Фермер Диетенко ввел рекламную акцию, целью которой является розигриш главного приза — кролика. Главный приз достанется тому, кто предложит

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

Входные данные: в текстовом файле price.in через пробел записаны натуральные числа, не превышающие 50 000.

Выходные данные: в текстовый файл price.out записать единственное число — уникальную цену. Если такой цены нет, то вывести «No»

Пример 1:

Входной файл: price.dat

1 6 23 4 63 1 3 1 3 6

Выходной файл: price.sol

4

Пример 2:

Входной файл: price.dat

2 3 4 3 2 4

Выходной файл: price.sol

No

 

 

Задача 30. «Свиномания»

(Заочная олимпиада, 2009-2010)

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

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

преодолеть мамино убеждение об опасности вирутальных вируса, и тогда Вася, обратился к гениалього ходу.

Он составил карту города. Карта представляет собой прямоугольник размерами 1000×1000 со сторонами параллельными осям координат.

Южная улица имеет координаты (0,0) — (0,1000). Северная имеет координаты (1000,0) — (1000,1000)

Он составил программу, которая определяет, является безопасный путь с улицы Северной (на которой он живет), до улицы Южной (где живет его любимая Маричка) и продемонстрировал это маме. Вася справился с задачей и сейчас общается со своей любимой, а вам слабо?

Входные данные:

В первой строке входного файла porkflu.in содержится целое число T — количество наборов данных (1 <= T <= 10).

Далее следуют сами наборы. Первая строка каждого набора содержит одно число N — количество пораженных площадок (0 <= N <= 1000).

Каждый из последующих N строк описывает поражен площадка (круг) и содержит 3 числа: Xi, Yi, Ri — координаты центра и радиус поражения.

Исходные данные:

Для каждого набора данных выведите в отдельную строку выходного файла porkflu.out слово YES если можно добраться из северной до южной улице без риска быть пораженным вирусом, и NO в противном случае.

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

3

500500499

0 0999

1000 1000 200

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

YES

Задача 31. «Дельцы»

(Заочная олимпиада, 2009-2010)

На борьбу с призраком свиного гриппа дельцы из фирмы «А1H1 Ltd» выбили финансирование из государственного бюджета. Теперь они занимаются исследованиями и пытаются обнаружить вирус в различных материалах и веществах. Они разработали прибор, который по образцу пробы переводит ее в цифровой код — KOD — последовательность целых положительных чисел.

Теперь они занимаются поиском подпоследовательности VIRUS — чисел идущих подряд в последовательности KOD и имеют такое свойство: VIRUS [1]> VIRUS [2] <VIRUS [3]> VIRUS [4] <VIRUS [5] ….

Исследователи уверены, что чем больше последовательность VIRUS тем больше вероятность наличия вируса свиного гриппа в пробной веществе.

Входные данные:

Во входном файле business.in первое число — N (1 <= N <= 14000). Далее N различных положительных чисел не больше 30000.

Исходные данные:

В выходной файл business.out вывести единственное число — длину самой подпоследовательности VIRUS в последовательности KOD

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

5 2 4 1 3 5

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

3

 

 

Задача 32. «Змейка»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт

Петрик с одноклассниками любит играть в игру «Змейка». Надеюсь, вам также знакома эта игра: в прямоугольном поле, размером NxM, перемещается змейка — непрерывная ломаная линия шириной в 1 клетку,

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

Заданное текущее местоположение змейки. Нужно вывести Yes, если голова змейки коснулась тела, то есть игра уже закончилась, или No в противном случае и посчитать длину змейки.

Входные данные:

Входной файл z2.dat содержит в первой строке числа N i M, которые задают размеры игрового поля. (1 <= N, M <= 100)

В следующих N строках содержатся элементы массива, каждый из которых равен 1, если клетка принадлежит змейке, или 0 — если клетка не принадлежит змейке.

Исходные данные:

В Входящий файл z2.sol вывести в первую строку слово Yes, если игра проиграна, или слово No в противном случае; во вторую строку вывести текущую длину змейки.

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

 

Пример входных данных: Пример выходных данных:
10 октября  
0 0 0 0 0 0 0 0 0 0  
0 0 0 0 0 0 0 0 0 0  
0 1 1 1 1 1 1 0 0 0

0 0 0 1 0 0 1 0 0 0

0 0 0 1 0 0 1 0 0 0

 

Yes 14

0 0 0 1 1 1 1 0 0 0  
0 0 0 0 0 0 0 0 0 0  
0 0 0 0 0 0 0 0 0 0  

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

 

Математика

 

Задача 1.

(I областная олимпиада, 1987)

Написать программу, которая находит методом разделения отрезка пополам корень уравнения Ах + Bx + C = 0, с точностью до Е, если известно, что корень находится на отрезке [x 1, x 2].Проверить работу программы для А = 2,25, В = 1,25, С = 1,5, E = 0,001, x 1 = 0, x 2 = 1.

 

Задача 2.

(I и областная олимпиада, 1988 год)

Составить программу, по которой можно рассчитать значения функции Y = ax + bx + cx + d, а не закладывая x в регистры памяти. Решить задачу для а = 5, b = 3, c = 4, d = 1 и x = 1,75, x = 2,5.

 

Задача 3.

(I и областная олимпиада, 1988 год)

Вычисляя таблицу значений функции y = f (x), x = a, a + h, …, b, определить точки ее локального минимума и максимума. Точку заданной шкалы аргументов будем называть локальным минимумом, если f (x) <f (xh) и f (x) <f (x + h) локальным максимум, если f (x)> f (xh) и f (x)> f (x + h). Функция f (x) = sinx + x / 10, a = 2, b = 5, h = 0,2.

 

Задача 4.

(IV областная олимпиада, 1990 год)

Форт имеет форму четырехугольника, и в его углах и серединах сторон находятся площадки, на которых могут располагаться солдаты. Составьте алгоритм, который помог бы полковнику расставить n солдат на этих площадках так, чтобы вдоль каждой стороны находилось k солдат или сообщил, что это сделать невозможно.

Задача 5.

(IV областная олимпиада, 1990 год)

Составить программу получения двоичного кода любого целого десятичного числа X (0 <= X <= 255).

 

Задача 6. «Биквадратных уравнения»

(VII областная олимпиада, 1993 год)

Построить алгоритм решения биквадратных уравнения ax 4 + bx 2 + c = 0.

 

Задача 7. «Праздники»

(XIV областная олимпиада, 2000 год)

Правительство Ющенко обеспокоен большим количеством нерабочих дней в нашем государстве. Действительно, Новый Год, Рождество, 8 Марта, 1 и 2 Мая и т.д. И это не считая суббот и воскресений. Кроме того, если праздник выпадает на субботу или воскресенье, то нерабочим будет еще и ближайший рабочий день, который следует за праздником. Например, если 1 мая выпадет на субботу, то нерабочими будут 1, 2, 3, 4 мая. В связи с этим нужно написать программу HOLIDAY. *, Которая помогла бы проанализировать процентное отношение рабочих и нерабочих дней в прошлом, настоящем и будущем с целью учета убытков от нерабочих дней при составлении бюджета. Интересным в данном плане период с 1800 по 2200 год.

Входные данные:

В первой строке текстового ASCII файла HOLDAY.DAT через пробел записаны два числа в формате ДДММРРРР, означающие период необходимо проанализировать (например, 06022000 означает 6 февраля 2000). Первое число означает начало периода, второе — конец. Оба числа входящих в рассматриваемый период. Далее записаны списки праздничных дней для разных исторических этапов нашего государства в формате: ДДММРРРР ДДММРРРР ДДММ ДДММ ДЦММ 0. Конец файла обозначен числом 0

Примечания:

1. Гарантируется, что период, который необходимо проанализировать, полностью покрывается одним или несколькими историческими периодами, которые не пересекаются.

2. При расчетах нужно использовать современный (григорианский) календарь с учетом високосных лет. (Високосным есть год, номер которого делится на 4. Исключением является годы, номера которых делятся на 100 и не делятся на 400. Таким образом год 2000 — високосный, а 1900 — нет).

3. Все даты и периоды упорядочены в порядке возрастания. Число периодов не превышает 50, число праздничных дат в периоде — 120.Выходные данные: Текстовый ASCII-файл HOLIDAY.SOL должен содержать в одной строке через пробел два числа, первое из которых указывает на общее число дней в периоде, второе — число нерабочих дней в указанном периоде.

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

HOLIDAY.DAT 01011999 31121999

01061946 01012000 0101 0201 0803 0105 0205 0905 0711 0811 0

HOLIDAY.SOL 365112

 

Задача 8. «Биквадратных уравнения»

(XV областная олимпиада, 2001 год)

Составьте программу BIKVAD.PAS (или BAS или СРР) нахождение действительных корней биквадратных уравнения a * x ^ 4 + b * x ^ 2 + c = 0. Ваша программа должна прочитать входные данные из текстового файла BIKVAD.DAT и вывести четыре корня или текст N0, если соответствующий корень отсутствует, в текстовый файл BIKVAD.SOL.

Входные данные:

в четырех строках файла BIKVAD.DAT соответственно записаны точность вычисления, выраженная количеством десятичных знаков k, коэффициенты а, b, с.

Исходные данные:

в четыре строки файла BIKVAD.SOL вывести значения корней в порядке возрастания или текст N0, если соответствующий корень отсутствует (на первом месте ставить числа, а за ними текст).

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

BIKVAD.DAT 4

1

-13

36

BIKVAD.SOL

-3.0000

-2.0000

2.0000

3.0000

 

 

Задача 9. «Выражение»

(XVIII областная олимпиада, 2004 г.)

Заданные действительные числа c, d. Вычислить значение выражения с четырьмя десятичными знаками

tg cx 3 dx 2 x ,

1 2 1

 

 

 

где x 1 — больше, а x 2 — меньший корни уравнения

x 2 3 x cd

0.

входные данные

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

Задача 10.

(XVIII областная олимпиада, 2004 г.)

Когда Максим Розуменко учился в финансовом колледже, у него были очень плохие отношения с учителем информатики. Поэтому, на выпускном экзамене учитель дал ему индивидуальное задание. Так как Максим был крутым хакером, он смог скопировать с сервера 10 тестов, на которых учитель собирался тестировать его решение. К сожалению, на сервере не было ответов на эти тесты. И сейчас Максиму быстрее нужно найти ответы.

Задания.

Учитель задал Максиму такую ​​задачу:

«На промежутке [A, B] необходимо найти количество натуральных чисел X таких, что:

1) X, X + 1, X + 2, …, X + K-1 относятся [A, B];

2) для каждого натурального Y с [X, X + K-1] найдется натуральное Z <> Y с [X, X + K-1] такое, что у чисел Z и Y есть хотя бы один общий делитель больше 1.

Кроме того, найдите хотя бы одно такое X (если оно существует). »

Входные данные.

Вам дается 10 входных файлов с именами 1.IN, 2.IN …, 10.IN. В каждом из них записаны три числа: K, A, B — по одному числу в строке.

Исходные данные.

Вам нужно сдать на преревирку 10 выходных файлов с именами 1.OUT, 2.OUT, …, 10.OUT, где i.OUT — выходной файл для i.IN (i = 1, 2, …, 10). Каждый из этих файлов должен содержать две строки. В первой строке должно быть записано количество чисел X, удовлетворяющие вищезаписани условия.  Во второй строке должно быть записано одно из таких X. В случае, когда таких X не существует, файл должен состоять из одного числа — 0.

Задача 11. «О микробы»

(XIX областная олимпиада, 2005 год)

Известно, что в одном кубическом метре воздуха помещения класса до начала занятий содержится 2600 бактерий. С одной микроба через каждые 30 минут при t = + 30˚C образуется два. При t = + 20˚C распределение микробов замедляется в 2 раза, а при t = + 10˚C — в 20 раз. Объем класса S м 3, в классе находятся m учеников.Нужно вычислить количество микробов, приходящихся на одного ученика через k часов после начала занятий (1≤ k≤ 7) при температуре t (t может иметь значение 10, 20, 30).

Технические требования: С клавиатуры вводятся (стандартный входной поток) S, m, k, t четырех числа, разделенные пробелом.На экран выводится (стандартный выходной поток) единственное число — количество бактерий, приходящихся на одного ученика.

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

Входные данные:

120 10 30 апреля

120 15 20 февраля

: 100 20 10 май

Исходные данные:

7987200

105300

21930

 

 

Задача 12. «Вывернутая память»

(XIX областная олимпиада, 2005 год)

После аварии в гиперпространственного прыжке звездолет «ФАЭТОН» стал зеркально отраженным — левое поменялось с правым. Сердце во всех астронавтов стало справа, а название корабля превратилась в «НОТЕАФ».  также

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

двоичное представление программы в памяти компьютера. Для этого необходимо поменять местами биты в 16-битных словах (выполнить зеркальное отражение): 0-й бит должен стать 15-м, 1 — 14, 2 — 13 и т.д.

Пример отображения: 0110001011101101 ® 1011011101000110 Входные данные В первой строке файла FAETON.DAT

записано одно целое число N (0 <N)

Выходные данные В выходной файл NOTEAF.REZ записать N строк, по одному числу в строке — десятичное представление слов программы после зеркального отражения.

Пример файла FAETON.DAT: 3

1

32767

Пример файла NOTEAF.REZ: 32768

65534

 

 

Задача 13. «Проверьте равенство»

(XXII областная олимпиада, 2008 год)

Заданные целые числа X, Y, P, Q (-10100 □ X, Y, P, Q □ 10100).Нужно проверить равенство X Y = P Q. Напомним, что a b определяется следующим образом:

при b> 0, a b = a * a * … * a (b множителей)

при b = 0, a □ 0 a b = 1 при b <0, a □ 0 a b = 1 / a -b

для других комбинаций a и b значение a b не определено.

Входные данные

Во входном файле записаны числа X, Y, P, Q, каждое в отдельной строке.

Выходные данные

Выведите слово correct, если данное равенство для полученных входных данных выполняется, или incorrect, если равенство не выполняется, или хотя бы одна из ступеней не определен.

примеры

 

g.in g.out
2 correct
4  
4  
2  
2 incorrect
3  
3  
2  

 

 

 

Задача 14.

(XXIII областная олимпиада, 2009 год)

Петрик и Сергей во время зимних каникул часто играли в игру «Большой произведение». Суть этой игры такова: умножают целое число P на одно из чисел от 2 до 9. Петрик всегда начинает с P = 1, выполняет умножение, затем полученное число умножает Сережа, потом снова Петя и т.д. Перед началом игры они выбирают случайное число N, и победителем выходит тот, кто первый получит P> = N. Попробуйте определить, кто из мальчиков выигрывает при заданном N, если оба играют оптимально правильно.

 

Задача 15. «Triangle»

(XXIV областная олимпиада 2010 год)

Треугольное число — это число кружочков, которые могут быть расставлены в форме равностороннего треугольника:

 

Т 2 = 3 Т 3 = 6

Последовательность треугольных чисел T n для n = 0, 1, 2, … начинается так: 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, …

Напишите программу, которая находит N-е треугольное число.

 

 

Задача 16. единичные дроби

(Заочная олимпиада, 2001-2002)

Потребность в дробях возникла еще в древние времена. Первый дробь, который использовали, был, очевидно, «половина» (1/2). Затем появились дроби с единицей в числителе, так называемые «единичные» дроби: 1/3, 1/4, 1/5, … Если расчеты приводили к появлению других дробей, то их заменяли суммой различных единичных дробей. Например, 2/5 = 1/3 + 1/15.

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

Входные данные находятся в файле INPUT.DAT, в единственной строке которого через пробел записной два числа: числитель и знаменатель дроби, не превышающих 1000.

Выходные данные: вывести в файл OUTPUT.DAT результат в виде последовательности знаменателей единичных дробей (через пробел).

Пример: INPUT.DAT 2 мая

OUTPUT.DAT

15 марта

 

 

Задача 17.

(Заочная олимпиада, 2002-2003)

Даны два целых числа М и N.

Вычислите сумму всех целых чисел от меньшего к большему по данным чисел (включительно).

Входные данные: первая строка — число М (-2000000000 <M <2000000000) вторая строка — число N (-2000000000 <N <2000000000).

Выходные данные: соответствующее число.

пример входящих данных Пример выходных данных 1 3

2

 

 

Задача 18. «Десятичная дробь»

(Заочная олимпиада, 2002-2003)

Дано дробь m / n, где m и n целые числа 0 <= m <= 1000000, 1 <= n <= 1000000.

Вывести точное значение дроби в десятичном виде с выделением периода.

Например: 1/3 = 0 (3)

15/14 = 1.0 (714285)

Входные данные:

В первой ленте · входного потока содержится два числа m и n разделены одним или несколькими пробелами.

Исходные данные:

Вывести в первую ленту исходного потока значение дроби в десятичной виде.

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

входные данные Исходные данные
1 января 1
25 октября 2.5
100 6 16. (6)
1 июля 0 (142857)
15 14 1.0 (714285)

Задача 19. «Степень по модулю»

(Заочная олимпиада, 2002-2003)

Вычислите значение выражения: остаток от деления на mx в степени y.

z = x ^ y mod m, где x, y, m — натуральные числа, не превышающие 1000000000.

Входные данные:

В первой ленте входного потока содержатся числа x, y, m разделены одним или более пробелами.

Исходные данные:

В первую ленту исходного потока вывести число z — значение выражения. Примеры данных:

входные данные Исходные данные
7 Февраля 1000 128
2 10 июля 8
10 11 сентября 10
4 марта 4 1

 

 

Задача 20. «Ленивец»

(Заочная олимпиада, первая лига, 2005-2006)

«Не откладывай на завтра … то, что можно отложить на послезавтра!». Так перефразировал народную мудрость один ленивец, перелезая в своих джунглях с ветки на ветку. А чтобы не забыть, на когда викладае свои дела, он приобрел компьютер. Теперь ему очень нужна программа, которая правильно высчитывала число и месяц, что наступят послезавтра, если известны сегодняшние число и месяц. 31 декабря 2006 Ленивец планирует поменять компьютер на более совершенный, поэтому его устроит программа, которая работает правильно с датами в пределах 2005-2006 годов.

Входные данные: из стандартного входного потока программа получает два целых числа C — сегодняшнее число (0 <C <32) i M — сегодняшний месяц (0 <M <13).

Выходные данные: в две строки стандартного выходного потока программа выводит два целых числа — послезавтрашние число и месяц.

Пример входных данных: 20 июля

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

7

 

 

Задача 21.

(Заочная олимпиада, первая лига, 2005-2006)

Двое товарищей договариваются о встрече через определенное время.  Один из них имеет только часы с циферблатом, на котором часа обозначаются числами от 1 до 12. Второй имеет только секундомер, на котором учет времени ведется в секундах и может выражаться неотъемлемым целым числом. Когда часы показывали время Н часов М минут S секунд, был включен секундомер.Выяснить, какое время будет на часах, когда по секундомеру пройдет Т секунд.

Входные данные: В первой строке текстового файла clock.dat записаны три целых числа Н, М и S, разделенные пробелами — показания часов в начале отсчета (0 <H <13 0≤ M <60, 0≤ S <60).Во второй строке — единственное число, время на секундомере Т (0≤ Т ≤1 000000000).

Выходные данные: В единственной строке текстового файла clock.sol записаны три числа, разделенные пробелами — количество часов, минут и секунд на часах через Т секунд после начала отсчета.

Пример 1:

 

сlock.dat сlock.sol
10 15 20

35

15 октября 55

Пример 2:

сlock.dat сlock.sol
10 15 20

350

21 октября 10

 

 

 

Задача 22. «Прямоугольник»

(Заочная олимпиада, 2008-2009)

Назовем «длиной» прямоугольника, стороны которого параллельны осям координат, его размер вдоль оси OX, а «шириной» — размер вдоль оси OY. Из стандартного входного потока вводятся четыре целые числа X1, Y1, X2, Y2, разделенных пробелами, модуль ни один из которых не превышает 1000000000 — координаты двух противоположных вершин прямоугольника. Определить его длину и ширину и вывести в стандартный выходной поток в следующем формате:

LEN <длина> WID <ширина> Пример входных данных: 2 Апреля -3 90

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

LEN: 5 WID: 86

 

Задача 23.

(Заочная олимпиада, 2008-2009)

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

N — зерен имеют массу М г, чистота семян составляет К%, всхожесть С% и указано, что на одном гектаре должно расти Р ростков данной культуры.

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

следующих данных: N = 1000, М = 40, К = 97, С = 93, Р = 6000000, Н = 100 он получил такой ответ: 26604.589 кг. Напишите программу, которая автоматизирует процесс вычисления.

Технические условия:

входящие данные: в единственной строке текстового файла ekonom.in через пробел записаны натуральные числа: N, М, К, С, Р, Н

Выходные данные: в единственную строку текстового файла ekonom.out записать найденную массу зерна, выраженную в килограммах с точностью до грамма.

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

1000 40 97 93 6000000 100

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

26604.589

 

 

Задача 24.

(Заочная олимпиада, 2008-2009)

У фермера Диетенка произошла досадная неуместность: вышел из строя часы, которые так долго ему служил. Теперь время он мог определять только по метрономом. Работа фермера требует точного измерения времени. Метроном он может настроить на К ударов в Т секунд. Как зная количество N ударов определить время в часах, минутах и ​​секундах.

Входные данные: в единственной строке текстового файла time.in записаны через пробел натуральные числа N, Т, К.

Выходные данные: в единственную строку текстового файла time.out записать результат в виде:

h: годиниm: хвилиниs: секунды Пример входных данных: 10013 1 февраля

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

h: 1m: 23s: 26

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

 

10013 1 февраля

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

h: 5m: 33s: 46

 

 

Задача 25. «Промилле»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт

Дима увлекся точными расчетами. Он хорошо изучил проценты (1/100 часть) и был поражен новой информацией: 1/1000 часть чего-либо называется промилле и обозначается ‰. Именно такая точность ему была нужна для расчетов.

Задания. В файле promile.in в нескольких строках через пробелы записано промилле. Необходимо добавить все части и определить целую и дробную части. Результат записать через запятую в файл promile.out.

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

 

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

456

1,656

 

 

 

Задача 26. «Куб»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт

Деревянный куб со стороной а> 1 покрасили и распилили на кубики со стороной 1. Определить количество кубиков, которые будут иметь 3 окрашенные грани, две окрашенные грани, одну и ни одной.

ограничения:

Сторона куба является натуральным числом, не превышает 2010.

Входные данные:

Из стандартного потока прочитать число а, являющегося стороной куба.

Исходные данные:

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

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

 

Пример входных данных: Пример выходных данных:
3 12 августа 6 января

 

 

 

Задача 27. «Сумма коэффициентов»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт

Найдите сумму коэффициентов при нечетных степени х многочлена (x ^ 5 + x-1) ^ N.

ограничения:

N является натуральным числом, не превышает 2010.

Входные данные:

Из стандартного потока прочитать число N.

Исходные данные:

В единственную строку стандартного потока записать сумму коэффициентов при нечетных степени х указанного многочлена.

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

 

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

математическое моделирование

 

Задача 1.

(I и областная олимпиада, 1988 год)

Обувная фабрика ежегодно увеличивает производство обуви на p%. Составить программу, по которой можно рассчитать через сколько лет производство обуви удвоится. Решить задачу для p = 7%, 13%, 19%.

 

Задача 2. «Фермер»

(XИИ областная олимпиада, 1998 год)

Фермер собрал хороший урожай и перед ним встала проблема как можно выгоднее его продать. Фермеру, используя возможности Internet, удалось получить полную информацию о ценах на рынках в соседних селах и цены на топливо. Надо написать программу FARMER. *, Предлагающий деревню, на рынок которого наиболее выгодно отвезти продукцию. У фермера достаточно полного чтобы добраться до любого из рынков, но, возможно, нужно будет купить топливо на обратный путь.

 

Задача 3. «Переводчики»

(XVI областная олимпиада, 2002 год)

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

Напишите программу, которая определит работников, которых нужно оставить на работе в таких условий:

1) Каждый переводчик знает два языка (M1 M2) и получает заработную плату C.

2) Бюро должно переводить тексты с любого языка на любую

другую.

3) Суммарная заработная плата должна быть минимальной

Входные данные:

в первой строке два числа, N и K. (2 <= N <= 100, K <= 30000) в следующих K строках содержится по три числа: M1i M2i Ci — языка которые знает i-й переводчик, и его заработная плата. (1 <= Ci <= 100).

Исходные данные:

в первую строку вывести число P — количество работников, которых нужно оставить на роботи.у вторую строчку вывести P чисел — номера переводчиков, которых нужно оставить на работе.

пример:

7 июня

1 4 февраля

1 июня 3

2 5 марта

2 5 4

6 февраля 2

4 марта 4

4 5 1

Ответ: 5

2 5 4 6 Июль

 

 

Задача 4.

(XXIII областная олимпиада, 2009 год)

N народных депутатов собираются собраться на благотворительный аукцион. i-й депутат приходит в момент времени T [i] и имеет возможность потратить на этом аукционе P [i] ненаших денег.Двери помещения аукциона имеют K + 1 степеней открытости и обозначаются целыми числами из интервала [0, K]. Степень открытости двери может изменяться на единицу в единицу времени, то есть дверь может открыться на единицу, закрыться на единицу или

остаться в прежнем состоянии. В начальный момент времени двери закрыты (K = 0). i-й депутат зайдет на аукцион только тогда, когда двери открыты специально для него (такая человеческая слабость), то есть когда степень открытости двери соответствует его полноте S [i]. Если в момент, когда депутат подъедет к дому аукциона, степень открытости двери не соответствует его полноте, он едет и больше не возвращается. Аукцион работает в интервале времени [0, T]. Организаторы хотят собрать депутатов с максимальным суммарным богатством открывая и закрывая двери соответствующим образом. На какую сумму выручки они могут рассчитывать.

 

Задача 5. «Salon»

(XXIV областная олимпиада 2010 год)

В салон красоты пришло n девушек.Каждая из них должна посетить парикмахера и косметолога. У каждого она проводит по m часов.За какой наименьшее время k сотрудников салона красоты смогут обслужить всех девушек, если каждый сотрудник может выполнять функции как косметолога, так и парикмахера?

 

Задача 6.

(Заочная олимпиада, 2003-2004)

Над последовательностью, состоящей из N чисел натурального ряда, выполняют такие действия

1) вычеркивают последовательно каждый М-й элемент в последовательности;

2) если в последовательности осталось больше или равно М элементов переходим к действию 1.

Какое число будет вычеркнуто последним в результате проведенных действий. Если число не существует, ответ: 0.

Входные данные: в одной строке через пробел натуральные числа M и N. Выходные данные: соответствующее число.

Технические ограничения: M и N не превышают 2000000000.

пример входящих данных Пример выходных данных: 100100100

 

Задача 7. «Библиотека кошевого писаря»

(Заочная олимпиада, 2003-2004)

В библиотеке кошевого писаря является собрание из N книг. (N <= 1000). Он решил упорядочить их в книжный шкаф. Шкаф имеет ширину W <= 2000000000 и писарь может выбирать высоты книжных полок такие, которые только захочет. Но ему необходимо подобрать их так, чтобы общая высота шкафа была наименее возможной. Порядок книг менять нельзя! (Толщины и высоты книг — целые положительные числа, не превышающие 2000000. Ширина шкафа гарантированно не меньше толщины самой толстой книги)

Входные данные:

В первой строке числа N и W.

Вторая строка содержит N целых чисел — высоты книг. Третий содержит также N целых чисел — толщины книг. пример:

5 марта

2 4 4

2 февраля 2

Исходные данные:

Целое число — минимально возможная высота шкафа. Исходные данные для примера:

6

 

 

Задача 8. «Добровольное пожертвование»

(Заочная олимпиада, первая лига, 2005-2006)

В загадочной стране Труляля, после очередной цветной революции, в борьбе с коррупцией ввели новые денежные купюры номиналом 1, 3, 9, 27, 81 … Пока цветные воюют с мифическими коррупционерами, шустрый бармен свои

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

Входные данные: В первую строку текстового файла tugrik.in записана сумма, которую нужно заплатить, согласно чеку.

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

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

 

tugrik.in tugrik.sol
79 81

 

 

 

Задача 9. «Аэропорт»

(Заочная олимпиада, высшая лига, 2006-2007)

Компания «Хмельницкие авиалинии» желает осуществлять пассажирские перевозки на ряде рейсов вида Хмельницкий — некоторое город — Хмельницкий. Вылет самолета на каждый из рейсов осуществляется ежедневно. Для каждого рейса известна необходимая час выхода самолета на рейс и час освобождения самолета с рейса после его возвращения в аэропорт города Хмельницкого. Например, Хмельницкий — Одесса — Хмельницкий 15:35 — 18:20, Хмельницкий — Стамбул — Хмельницкий 12:50 — 17:45. Если промежутки времени, необходимые для обслуживания рейсов не пересекаются, то эти рейсы может обслуживать один самолет.

Задача. По данным списком рейсов, которые определены время начала и окончания обслуживания рейса, определить наименьшее количество самолетов, которая сможет обслуживать все эти рейсы. Количество рейсов не превышает 1000.

Входные данные. В первой ленте входного потока содержится одно число — количество рейсов. В следующих лентах содержится описание рейсов, по одному в каждой ленте, в виде: время начала — время завершения. Например, 13:20 — 18:10. Значение часов и минут всегда содержат две цифры. Значение времени и знак «-» могут быть отделены некоторым количеством пропусков. Входные данные гарантированно содержат корректное значение часов и минут.

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

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

5

3:50 — 9:10

5:15 — 8:45

8:55 — 12:20

10:15 — 15:35

23:10 — 3:30

Пример выходных данных, соответствующих входным:

2

 

 

Задача 10. «Метеоритный дождь»

(Заочная олимпиада, высшая лига, 2006-2007)

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

Для защиты телескопа его нужно транспортировать в специально отведенное место — хранилище. В одном хранилище может поместиться только один телескоп.

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

Входные данные (файл METEOR.DAT):

В первой строке число T — количество секунд, через которую метеориты упадут на планету.

Во второй строке число N — количество телескопов.

В третьей строке находится 2 * N чисел — координаты телескопов (x,

y).

В четвертой строке число M — количество хранилищ.

В пятой строке находится 2 * M чисел — координаты хранилищ (x, y).В шестой строчке число V — скорость транспортировки телескопов.

Ограничение: 0 <T <1000000; 0 <N <100; 0 <M <100; -30000 <= x <= 30000; —

30000 <= y <= 30000; 0 <V <1000

T, N, M, x, y — целые.

Исходные данные (файл METEOR.SOL):

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

пример:

 

METEOR.DAT METEOR.SOL
10 2
4  
1 7 3 7 5 7 100  
100  
2  
2 7 4 7  
0.1  

 

 

 

Задача 11. «Двоичное дерево»

(Заочная олимпиада, высшая лига, 2006-2007)

Двоичное дерево размером n состоит из ствола длиной 2 n.От ствола растут две ветви длиной 2 n-1 каждая.На конце каждой такой ветви растут менее двух веточки длиной 2 n-2.И так далее. Длина самых веточек составляет 2 0.На конце каждой малейшей веточки растет листочек. Листочки пронумерованы числами от 1 до 2 n таким образом, что номера всех

листочков отличаются и номера листочков любой ветви дерева идут подряд без промежутков. На листочке i сидит гусеница.Ей не понравился вкус этого листочка и она хочет переползти на листочек с номером j.Какой самый маленький путь должен преодолеть гусеница по веткам двоичного дерева, чтобы достичь листочка j?

Исходные данные:

В первой строке входного потока содержатся три числа: n, i и j

разделены пробелами. 1 <= n <= 30, 1 <= i, j <= 2 n.

результат:

В первую строку выходного потока вывести одно число — длину пути от листочка i в j.

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

Данные, соответствующие рисунке приведенном выше:

3 2 4

Пример результата:

Результат, соответствует данным приведенным выше 6

 

Задача 12. «Game»

(Заочная олимпиада, 2009-2010)

Вовочка любит на уроках математики играть различные интеллектуальные игры — не бездельничать же вовсе. Недавно он увлекся такой простой игрой. Сначала для игры выбирает некоторое натуральное число N и рисует на бумаге кружочек. Затем рисует еще один и соединяет его с первым линией. После этого рисует следующий кружочек и соединяет его с одним из предыдущих. Так он делает до тех пор, пока на листке не будет равных N кружочков. Свои кружочки Вовочка нумерует в произвольном порядке числами от 1 до N. Составьте программу, которая определит сколько различных рисунков может сделать Вовочка выбранного N. Рисунки считаются различными, если существуют такие кружочки с номерами i и j, что на одном рисунке они соединении , а на другом — нет.

Формат входных данных. В первой строке входного файла game.in содержится K (0 <K <= 10) — количество тестов. Следующие K строк содержат натуральное число N (0 <N <= 100) для каждого теста.

Выходные данные. Для каждого теста в выходной файл game.out вывести остаток от деления количества различных рисунков на число 2000000011.

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

game.in

3

1

2

3

game.out

1

1

3

Обработка строк

 

Задача 1.

(I областная олимпиада, 1987)

Данная строчная величина ТЕКСТ. Написать алгоритм, который определяет, какая буква в этом тексте встречается чаще всего. Исходить из предположения, что такая буква одна.

 

Задача 2.

(I и областная олимпиада, 1988 год)

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

 

Задача 3.

(ИIИ областная олимпиада, 1989 год)

В строчной переменной ТЕКСТ записан текст последовательность слов; слово — последовательность букв. Два соседних слова делятся точкой, запятой или пробелом.

Составить алгоритм, переписывали тексты в буквенных таблицу СТРАНИЦА [1: M] так, чтобы в каждом ее элементе-строке было не более N символов. Перенос слов со строки на строку не допускается; длина слов в тексте не превосходит N. Число строк, заполненных текстом, должен быть минимальный. Точки и запятые должны сохраниться, но они не должны появляться в начале нового строки.

 

Задача 4.

(IV областная олимпиада, 1990 год)

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

Задача 5. «Рабочие дни»

(V областная олимпиада, 1991 год)

Месяцу с 31-го дня соответствует линейная таблица элементов, в которой рабочий день обозначено 1, а нерабочий — 0. Составить алгоритм, который подсчитывает:

а) количество недель в месяце;

б) количество рабочих дней в каждом из недель месяца.

Примечание: Неделей будем называть произвольную не пустят множество единиц между двумя последовательными нулями или ограниченную нулем справа (если месяц начинается с рабочего дня), или ограниченную нулем слева (если месяц не заканчивается рабочим днем).

 

Задача 6. «Фиксированная буква»

(VI областная олимпиада, 1992 год)

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

 

Задача 7. «Скобки»

(VII областная олимпиада, 1993 год)

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

а) несоответствие скобок (и) по количеству;

б) закрывающая скобка размещена ранее открывающей; в) отсутствует содержание между скобками.

Результатом работы программы должно быть сообщение о типах допущенных ошибок и их место в тексте (если это возможно).

Задача 8. «Определение страниц»

(X и областная олимпиада, 1997 год)

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

Задача: Напишите программу, которая будет превращать списки страниц в соответствующую последовательность номеров страниц.

Входные данные: Входной файл PRINT.DAT содержит одну строку, имеет следующую структуру: страница-1, страница-2, страница-3, …, страница — N.

Страница — i — или номер страницы, или диапазон в виде початок- конец (начало <= конец).

Страницы и диапазоны перечисленные в возрастающем порядке i не пересекаются. Диапазон включает начальную и конечную страницы. Номера страниц — числа от 1 до 1000000. 1 <= N <= 1000000.

Выходные данные: Результат надо вывести в файл PRINT.SOL в виде страница-1, страница-2, страница-3, …, страница — М без пропусков.

 

Задача 9. «Форматирование текста»

(XИИИ областная олимпиада, в 1999 год)

Дан текст. Выполнить форматирование текста по ширине по заданной левой и правой границей и отступа. Все символы текста с кодами 0..32 считать пробельности, остальные непробильнимы. Выражения в тексте вида «<* n3 n1 n2>» означает начало абзаца с левой границей n1, правой границей n2 и абзацным отступлением n3 и должны быть исключены из отформатированного текста. Считать, что текст всегда начинается с такого выражения. Считать, что выражения всегда корректны (n2> n1, n2> n3, n1> 0, n2> 0, n3> 0). Считать, что в тексте нет слов длиной более (n2-n3) / 2-1.отформатированный текст с

пробельных символов должен содержать только пробелы (код 32) и переводы ленты (пара символов с кодами 13, 10 раз в таком порядке).

 

Задача 10. «Сообщения»

(XIV областная олимпиада, 2000 год)

С лицея г..Шепетовки в лицей «Антей» г..Каменец-Подольского с помощью двух курьеров было отправлено сообщение, состоящее из символов 0 и 1. Совета шутки каждый из курьеров проработал несколько раз такое преобразование сообщения: любую часть, содержащую две единицы записал в обратном порядке (перевернул). Например, в сообщении 11010100 курьер мог перевернуть подстроку, состоящий из символов с 2 пo 5 позиции, и тогда получалось сообщение 10101100. Получив два сообщения в г. Каменец-Подольском лицеисты «Антей» решили проверить их эквивалентность, то есть можно получить одно из другого при помощи описанных преобразований.Нужно написать программу REPORT. *, Определяющей эквивалентность сообщений и в случае эквивалентности сообщений находит хотя бы один способ преобразования одного сообщения в другое.

Входные данные:

В текстовом ASCII-файле REPORT.DAT в двух строках записаны полученные в г..Каменце-Подольском сообщения. Их длина не превышает 100 символов.

Исходные данные:

Если сообщение не эквивалентны, то текстовый ASCII-файл REPORT.SOL должен содержать только одну строку NO. Если сообщение эквивалентны, то в первую строку текстового ASCII-файла REPORT.SOL нужно вывести слово YЕS, в следующие строки нужно вывести последовательность преобразований первого сообщения в другое. каждое преобразование записывается в отдельном строке в виде пары цифр и, j,

разделенных пробелом, что означает переворачивание подстроки символов от i-го по j-й номер.

Пример входных и выходных данных REPORT.DAT REPORT.SOL 100011100 YES

001011001 6 сентября

8 Марта

1 мая

 

 

Задача 11. «Корректор»

(XV областная олимпиада, 2001 год)

При работе с текстовым редактором используют операции вставки символа в строку, уничтожение символа и замены символа. Назовем эти операции редактирования элементарными. Вы должны составить программу CORECT.PAS (или BAS или СРР), которая прочитает из текстового файла CORECT.DAT два символьные строки S1 и S2, подсчитает наименьшее количество элементарных операций редактирования, которые необходимо выполнить, чтобы строка

S1 превратить в строку S2 и результат выведет в единственную строку текстового файла CORECT.SOL.

Входные данные:

в первой строке файла CORECT.DAT записан символьная строка S1, во второй строке — символьная строка S2.

Исходные данные:

в текстовый файл CORECT.SOL следует записать единственное число — наименьшее количество элементарных операций редактирования.

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

CORECT.DAT

принтер спринтер CORECT.SOL 1

Задача 12. «Word»

(XX областная олимпиада, 2006 год)

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

 

Задача 13. «Шпиономания»

(XX областная олимпиада, 2006 год)

Агент Джеймс Бонд передает сообщения в Центр по электронной почте. Письмо состоит из N строк (1 <= N <= 50000), длина которых не превышает 255 символов. Для того, чтобы затруднять расшифровку сообщения в лист помещается «мусор», который состоит из строк, которые повторяются. Каждая строка, относящаяся к «мусора» повторяется четное количество раз, и только одну строку встречается в письме только один раз (это и есть собственно сообщение агента). Вам необходимо написать программу, которая по заданному тексту письма определит текст сообщения Джеймса Бонда.

Входные данные:

Входной поток содержит набор строк письма. Признаком окончания письма символ «#», который стоит в отдельной строке (данная строка в текст письма не относится).

Исходные данные:

В выходной поток необходимо вывести найден строка сообщения.

Например:

 

Input Output
Куй железо, не отходя от кассы Алло шеф, это я — Лелик Бить аккуратно, но сильно Бить аккуратно, но сильно куй железо, не отходя от кассы

#

Алло шеф, это я — Лелик

Задача 14. «Smile»

(XXIV областная олимпиада 2010 год)

Напишите программу, которая подсчитает количество смайликов в заданном тексте. Смайликом будем считать последовательность символов, которые удовлетворяют условия: первым символом является или; (точка с запятой) или: (двоеточие) ровно один раз дальше может идти символ (минус) сколько угодно раз (в том числе символ минус может идти ноль раз) в конке обязательно идет некоторое количество (не менее одной) одинаковых скобок с такого набора: (,), [,]. внутри смайлика не может встречаться никаких других символов.

Например, ниже приведены последовательности является смайликами:

🙂

; ——— [[[[[[[[

в то время как эти последовательности смайликами не является (хотя некоторые из них содержат смайлики):

:-)]

-)

: 🙁

:-()

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

 

Задача 15. «Анаграмма»

(Заочная олимпиада, 2000-2001)

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

Выходные данные: в первой строке входного потока первую строчку во второй друга. Длина строки не более 255 символов. Результаты вывести в выходной поток «+» если возможно, иначе «-«.

 

Задача 16.

(Заочная олимпиада, 2000-2001)

Даны две строки. Необходимо вычеркнуть из данных строк некоторые символы так, чтобы строки стали одинаковыми и при этом имели максимально возможную длину.

Выходные данные: в первой строке входного потока содержится первую строчку, во втором — второй. (Строки не более 80 символов, элементы строк — маленькие буквы латинского алфавита) В первую строку выходного потока выдать найден строку. Например, для строк olymp и lamp ответ — lmp.

 

Задача 17. «Частота»

(Заочная олимпиада, 2001-2002)

Подсчитайте, какая из букв латинского алфавита встречается в файле TEXT.DAT чаще. Результат — букву (большую) вывести на экран. Если несколько букв встречаются чаще, то вывести ту, которая стоит раньше в алфавите.

Пример файла TEXT.DAT:

Life is life, la-la-la-la-la! Германия — Украина 4: 1

«L» is funny LLLLLLLLLlllllllllllllllllllllllletter. I like this letter: «u», «u», «u», u »

to be continued … Пример выходных данных: L

Задача 18. «Наибольшее число»

(Заочная олимпиада, 2002-2003)

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

Технические условия.

Входной файл MAX.DAT содержит строку символов, длиной не более 255 символов.

Записать в выходной файл MAX.SOL наибольшее число из входной строки.

 

 

Задача 19. «Новый Год в эпоху информатизации»

(Заочная олимпиада, 2002-2003)

В одной из школ города Olympijsk работает лаборант Елена. Она мечтает, чтобы Дед Мороз подарил ей в новогоднюю ночь большого пушистого белого медвежонка. Зайдя на официальный сайт Деда Мороза в Интернете www.moroz.did, Лена решила заказать себе новогодний подарок через on-line систему бронирования подарков «Yalynka».Но вместо приветствия «Happy New Year!»Она заметила непонятный строку букв» pyHNa pYr eaew!». Это результат работы ужасного вирису «AntiFrost», который был написан хакером Alexьом. Несмотря на свою вредность, вирус имеет несложную логику, и только переставляет буквы в тексте таким образом:

1) Вирус отдельно обрабатывает гласные и согласные буквы.

2) Вирус меняет местами 1-ю громкую с второй, третьей с четвёртой, 5-ю с шестом и т.д. по такому же принципу он меняет местами и согласные буквы.

3) Вирус меняет только латинские буквы, все остальные символы он оставляет неизменными.

Гласными буквами считать (a, o, i, u, y, e)

Лена сохранила искаженный вирусом текст в файл NOVYJRIK.HTM Напишите программу, которая запишет начальный (верный) текст в файл OLENA.HTM 0 <= Размер файла NOVYJRIK.HTM <= 60000 байт. В

файле

 

могут присутствовать строки, длина которых будет превышать 255 символов.

Пример файла NOVYJRIK.HTM:

<THLM>

pyHNa pYr eaew!

<NIFS TOFO = 7> С Новым Годом!</ ZETN>

</ THLM>

Соответствующий файл OLENA.HTM:

<HTML>

Happy New Year!

<FONT SIZE = 7> С Новым Годом!</ FONT>

</ HTML>

 

 

Задача 20.

(Заочная олимпиада, 2002-2003)

Маленкий программист Петя учится программировать на языке «CALC». Эта удивительная язык программирования позволяет лишь вычислять арифметические выражения. Язык CALC имеет следующие особенности:

1) Переменные обозначаются заглавными латинскими буквами (A, B, C, …, Z)

2) Оператор присваивания имеет следующий синтаксис: Сменная = выражение

3) Выражение — арифметическое выражение, что включает в себя скобки, числа, переменные и знаки арифметических операций +, -, *, /, где деления происходит целочисленных (то есть 7/3 равна 2)

4) Вывод реализуется помощью оператора:? выражение

5) В начале работы программы все переменные имеют значение 0

В файле PETRO.CLC записана правильная программа на языке CALC.Напишить программу, которая выведет в файл PETRO.OUT результат работы программы PETRO.CLC.

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

Символы пропуска могут встречаться в произвольном городе строки.

Длина строк в программе PETRO.CLC НЕ БУДЕТ превышать 100 символов.

Программа будет содержать не более 50 строк.

пример PETRO.CLC

T = 3

Z = 2

? A

? T

 

 

 

K = T * Z + A — 7

? K

? 3 * (5 + T) / 5

? ((((7))))

Z = 3

Z = -7 + 1 * (- 5) + Z

?Z

результат PETRO.OUT

3

-1

4

7

-9

Задача 21. «Розархиватор»

(Заочная олимпиада, первая лига, 2005-2006)

Юный программист создал программу-архиватор, которая работает по такому принципу: находит в тексте последовательность символов, записанную несколько раз подряд и заменяет этот «цепочку» числом повторений и найденной последовательностью, взятой в скобки. Но программу для разархивации он потерял. Помогите юному программисту составить программу, которая будет разархивировать текст. Длина разархивированные текста ограничивается максимальной длиной строки. Текст записан большими латинскими буквами.

Исходный текст находится в файле Z2.DAT. Извлечён текст запишите в файл Z2.SOL. Пример входных и выходных файлов: Пример 1.

Входной файл Z2.DAT: KF4 (T) G10 (N) L

Выходной файл Z2.SOL: KFTTTTGNNNNNNNNNNL.

Пример 2.

Входной файл Z2.DAT: E3 (TY) YU2 (NTU) L Выходной файл Z2.SOL: ETYTYTYYUNTUNTUL. Время на тест: 2с

 

Задача 22.

(Заочная олимпиада, первая лига, 2005-2006)

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

Входные данные В первой строке текстового файла broker.dat записано одно целое число N — количество заказов, полученных брокером (0 <N <100).Следующие N строк содержат тексты заказов.Каждый заказ состоит

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

Выходные данные В единственной строке файла broker.sol записано единственное число — стоимость самого крупного заказа.

Пример 1:

 

Broker.dat Broker.sol
3

To me 100 HP for 25 and 50 Audi for 30 and 250 KGB for 20

I want 500 actions BMW for 45 and 300 actions IBM for 35

Ford 200 for 70 euro

33000

Пример 2:

 

Broker.dat Broker.sol
4

gfhgf 10 hgjhkj 5 hjgjhgjhg 24 nmbmn 50 jhkjhk

jhgkjh 56 hgjhgh 2 vnbvnb 789 hgjhg 25

123 hgjhgjh hjhjhk 34 hgjg

bvcbv 345 hjghg 654

225630

 

 

 

Задача 23. «Текст 1»

(Заочная олимпиада, первая лига, 2005-2006)

Задано текст длиной <1000 символов. Вывести в файл Z1.SOL все слова, содержащиеся в тексте, в алфавитном порядке.

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

Входные данные: Текст находится в файле Z1.DAT.

Выходные данные: Отсортированные слова (каждое в отдельной строке) в файле

Z1.SOL.

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

i take part in an olympiad перевод осуществлен программой pragma

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

an i in

olympiad part pragma take осуществлен перевод программой

 

Задача 24. «Текст 2»

(Заочная олимпиада, первая лига, 2005-2006)

Задано текст длиной <255 символов. Определить можно с букв, в тексте, построить заданное слово. Каждую букву из текста можно использовать только один раз.

Входные данные: в файле Z2.dat — в первой строке задано исходный текст, во втором — заданное слово.

Выходные данные: в стандартный выходной поток вывести одно слово — «ДА» или «НЕТ».

Пример входных данных: текстовый файл Z2.dat:

строитель куб

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

 

 

Задача 25. «Текст 3»

(Заочная олимпиада, первая лига, 2005-2006)

Задано закодированный текст длиной <255 символов.              Определить систему кодирования и раскодировать текст.

Входные данные: в файле Z3.dat — в первой строке задано исходный текст.

Выходные данные: в стандартный выходной поток вывести раскодированный текст.Буквы Г и (Г) обозначаются одинаково.

Пример входных данных: текстовый файл Z3.dat:

бьялюил

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

команда

 

 

Задача 26. «Анаграммы»

(Заочная олимпиада, первая лига, 2006-2007)

Во входном файле Z1.dat содержится строка длиной не более 255 символов, в котором через один или несколько пробелов следуют слова.Найти все группы анаграмм (Анаграмма — это слово, которое образуется из другого слова перестановкой его букв) в этой строке и вывести в файл Z1.sol каждую группу с новой строки.Все слова должны идти через пробел в порядке, в котором они встречаются в строке.

Одинаковые слова выводить нельзя. Пример входных и выходных данных: Z1.dat

123 321 1234 12345 123456 231 132 3241 123457 123

Z1.sol

123321231132

1234 3241

 

 

Задача 27. «Порядок во всем»

(Заочная олимпиада, первая лига, 2006-2007)

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

Входные данные: в текстовом файле order.in через пробелы записаны массы кроликов и, возможно, метки, которые являются неразделимыми с номером.

Выходные данные: в текстовый файл order.out записать отформатирован

текст.

 

пример:

Входной файл: order.in

1 6s 2 3A 4 6

Выходной файл: order.out

1 6s 2 3A 4 июня

 

 

Задача 28. «Прибыло-выбыло»

(Заочная олимпиада, первая лига, 2006-2007)

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

Add 12

Add 3

Sub 8

… ..

«Add 12» свидетельствовало о том, что количество кроликов на ферме увеличилось на 12, а «Sub 8», что количество уменьшилось на 8. Составьте программу, которая будет по данным записями определять количество кроликов на ферме, если известна их количество в начале ведения такого учета.

Входные данные: в первой строке стандартного входного потока содержится целое N (N <= 10000) — начальное количество кроликов.Далее следуют строки с записями фермера. Натуральные числа, содержащиеся в этих строках не превышают 100, а количество таких строк не более 10000. Гарантируется наличие хотя бы одной записи.

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

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

12

Add 12

Add 3

Sub 8

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

19

 

 

Задача 29. «Двоичные палиндромы»

(Заочная олимпиада, 2008-2009)

С клавиатуры вводится число n (в десятичной системе счисления). Вывести из интервала [n, 2 * n] все числа (в двоичной системе счисления), двоичная запись которых является палиндромом.

Входные данные: с клавиатуры вводится единое число n (0 <n <50000).

Выходные данные: вывести на экран двоичные записи чисел-палиндромов из заданного интервала, каждое число в новой строке.

Пример входных и выходных данных: Стандартный входной поток:

3

Стандартный выходной поток: 11

101

Пояснение: при n = 3 интервал [3, 6] содержит 4 числа (3, 4, 5, 6), двоичные

записи которых соответственно (11; 100; 101; 110).

 

 

Задача 30. «Палиндромы — I»

(Заочная олимпиада, 2008-2009)

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

Входные данные: заданная строка находится в файле palindrome1.dat, длина его не превышает 30 символов

Выходные данные: в первую строку файла palindrome1.sol надо вывести искомое количество способов получения палиндрома

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

aab palindrome1.sol 4

Пояснение: палиндром можно получить, удалив символы: 1) 1 и 2; 2)

1 и 3; 3) 2 и 3; 4) 3

 

 

Задача 31. «Палиндромы — I и»

(Заочная олимпиада, 2008-2009)

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

Входные данные: заданная строка находится в файле palindrome2.dat, длина не превышает 2000 символов

Выходные данные: в первую строку файла palindrome2.sol надо вывести минимальное количество палиндромов, на которые можно разбить строку

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

abbacbb palindrome2.sol 3

Пояснение: abbacbb = abba + c + bb

 

 

Задача 32. «Удаление комментариев»

(Заочная олимпиада, 2008-2009)

Дан текст некоторой Паскаль-программы. Ваша задача состоит в том, чтобы удалить из нее все комментарии и пустые строки. Как известно, комментарий в Паскаль-программе — это текст, который записан в фигурных скобках — {} или в круглых скобках со звездочкой — (*). Длина строки программы не может превышать 128 символов. Комментарий может занимать как часть строки, так и несколько строк программы. Вложенные комментарии в тексте отсутствуют.

Входные данные:

В файле Z2.dat содержится текст программы с комментариями.

Исходные данные:

В файл Z2.sol записать текст программы без комментариев. Пустые строки в файл не записывать.

Пример: Z2.dat: var

i: integer {index}

a: array [1..10] of real; (* Massiv *) begin {rozvjazok

zadachi} for i: = 1 to 10 do a [i] = i;

{Vyvid massiva} for i: = 1 to 10 do

 

writeln (a [i]); (* Vse *)

end.

 

 

Z2.sol: var i: integer;

a: array [1..10] of real; begin

for i: = 1 to 10 do a [i] = i; for i: = 1 to 10 do writeln (a [i]);

end.

 

 

Задача 33. «Стек-анаграмма»

(Заочная олимпиада, 2008-2009)

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

Входное слово: eric.    Обозначим команду Push буквой i, а команду Pop буквой o. В результате выполнения последовательности команд iioio ioo на выходе образуется слово rice.

Очевидно для того, чтобы обработать слово с n букв необходимо выполнить n команд Push и n команд Pop. В результате на выходе образуется новое слово с n букв.

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

Задача: написать программу, определяющую, является ли заданная пара слов стек- анаграммой. Если есть, программа должна найти любую последовательность команд, превращают первое слово на другое.

Входные данные:

В первой строке входного потока содержится первое слово. Слово состоит только из маленьких латинских букв. Длина слова не превышает 10 букв (и не менее одной буквы). Во второй строке входного потока содержится второе слово. Второе слово тоже состоит только из маленьких латинских букв. Длина второго слова равна длине первого.

Исходные данные:

Если данные слова являются стек-анаграммой, в первую строку выходного потока вывести последовательность команд, превращают первое слово на другое. Команду Push обозначить латинской буквой i, команду Pop обозначить латинской буквой o. Команды разделить одним или более пробелами.

Если данные слова не являются стек-анаграммой, в первую строку выходного потока вывести одну латинскую букву x.

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

mada adam

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

iiiioooo

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

long nice

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

x

Задача 34. «Decoder»

(Заочная олимпиада, 2009-2010)

Вовочка с Василием жили в разных домах и во время осенних каникул, что взрослые их назвали Карантином, придумывали себе разные забавы. Предлагаю вашему вниманию одну из них. Вовочка отправляет Вася SMS со словом с N символов. Василько осуществляет контроль словом X (0 <= X <N) циклических сдвигов (циклический сдвиг — это когда последний символ переходит на место первого) и отправляет слово обратно в Вовочки. Вовочка должен определить сколько циклических сдвигов сделал Вася или сделал он ошибку при этих смещениях. При небольших словах эта игра была довольно простой, но с увеличением количества символов ее сложность возросла.

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

Формат входных данных. В первой строке входного файла decoder.in содержится натуральное число N (1 <= N <= 250000) — количество символов в слове. Вторая строка содержит первое слово. Третья строка содержит слово, было получено в результате циклических сдвигов. Слова состоят из символов таблицы ASCII с кодами от 33 до 255.

Выходные данные. В выходной файл decoder.out вывести наименьшее количество циклических сдвигов, которые надо сделать чтобы с первого слова получить второе или «-1» без кавычек в случае, когда это сделать невозможно.

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

decoder.in

8

karantyn tynkaran decoder.out 3

Задача 35. «Степан и палиндромы»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт Имя входного файла: a.in

Имя выходного файла: a.out

Степан с детства не любил палиндромы. Для этого на всех олимпиадах принципиально не решал задачи в которых речь шла о палиндромы. Учитель информатики придумал выход из сложной ситуации. Он предложил задачу, в которой следует найти не палиндром. Задано строку s. Найдите самый по длине подстроку, не является палиндромом. Напомним (не для Степана), что палиндромом называют строку, который читается с обеих сторон одинаково.

Входные данные:

Входной файл содержит строку s. Он содержит только маленькие буквы латинского алфавита, не пустой, и его длина не превышает 100000 символов.

Исходные данные:

В выходной файл выведите ответ на задачу. Если все подстроки являются палиндромами, то выведите «NO SOLUTION».

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

 

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

последовательности

 

Задача 1.

(I областная олимпиада, 1987)

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

 

Задача 2.

(I областная олимпиада, 1987)

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

 

Задача 3.

(I и областная олимпиада, 1988 год)

Составить программу вычисления суммы последовательности 1/1!+2/2!+3/3!+ … + n / n !. Вычислить по этой программе значения сумм для n = 9, n = 37, n = 68.

 

Задача 4.

(IV областная олимпиада, 1990 год)

Кот Матроскин и пес Шарик поехали на рыбалку и решили наловить не менее N рыбок. За первый день они выловили по одной рыб ке. Но ночью кот проголодался и половину съел. В последующие дни Шарику удавалось вылавливать вдвое больше, чем в предыдущий день и две, а Матроскин вылавливал на 5 рыбок больше, но ночью кот съедал столько рыбы, сколько за все предыдущие ночи и еще одну. Помогите дяде Федору составить алгоритм, с помощью которого он смог бы узнать, когда ждать своих друзей домой с рыбалки.

Задача 5. Непрерывный дробь (V областная олимпиада, 1991 год) Последовательность вида:

S 0 b 0,

S 1 b 0

a 1,

b

S 2 b 0

a 1,

a

S 3 b 0

a 1 …

a

1 b 1

2

b

b 2

1 a

2   3

b 3

называется последовательностью, определяет данный непрерывный дробь. Составьте алгоритм вычисления S n для данного n.

 

Задача 6. «Приближенное вычисление»

(VI областная олимпиада, 1992 год)

Написать алгоритм нахождения приблизительного значения функции y =

 

 

Sin (x) при малых значениях по формуле

y x x

3!

x 5

5!

x 7

7!

x 9

9! ,

используя при этом минимальное количество действий (П!= 1 * 2 * 3 * …* П).

 

 

Задача 7. «Преемственность»

(VI областная олимпиада, 1992 год)

В таблице натуральных чисел A [1], A [2], A [3] …A [n] каждое следующее число A [k + 1] наименьшее из чисел, больших A [k] такое, что каждая цифра A [k] является цифрой числа A [k + 1].Зная A [1], найти A [n].

Например: 27, 72, 207 и т.д.

 

 

Задача 8. «Абракадабра»

(XИИИ областная олимпиада, в 1999 год)

Последовательность из латинских букв строится так. Сначала она пустая. На каждом следующем шаге последовательность удваивается, после чего к ней слева дописывается очередная буква латинского алфавита (a, b, c, …). Ниже приведены первые шаги построения последовательности:

Изначально. Пустая последовательность. Шаг 1. a.

Шаг 2. baa.

Шаг 3. cbaabaa.

Шаг 4. dcbaabaacbaabaa.

………………………………….

Задача состоит в том, чтобы по заданному числу N определить символ, который стоит на N-м месте в последовательности, которую получили после 26-го шага.

 

Задача 9. «Дробная часть»

(XIV областная олимпиада, 2000 год)

Напишите программу SHOTPART. * Которая находит по заданному n (1 <n <1000) сто десятичных цифр дробной части числа Sn, где Sn = 1/2!+2/3!+3/4!+ … + (n-1) / n!

входные данные

В текстовом файле SHOTPART.DAT записано единственное число n (1 <n <1000)

Исходные данные

В текстовом файле SHOTPART.SOL нужно записать без пропусков сто цифр дробной части числа Sn.

 

Задача 10. «Разные результаты»

(XVIII областная олимпиада, 2004 г.)

1 1 1 …               1               1

Вычислить 3 февраля

2003

2004

выражение четырьмя способами:

последовательно слева направо;

1 1 …               1

1 1 …               1

последовательно слева направо исчисляется 3

затем второе значение отнимают от первого; последовательно справа налево;

2003 и 2 апреля

2004,

последовательно справа налево вычисляют суммы, описанные в b), затем проводят вычитание.

В файл uxxxn4.txt, где xxx-регистрационный номер участника, выведите в отдельных строках результаты полученных вычислений. Начиная с пятой строчки напишите объяснения полученных результатов. (Объяснение можно писать в редакторе Блокнот).

 

Задача 11. «Полосатики»

(XXII областная олимпиада, 2008 год)

Наши ученые изобрели новую полезную жизненную форму, названную полосатики.Полосатики — прозрачные аморфные Амебовидный создания, живущие в колониях. Большинство времени полосатики двигаются. Когда два из них сталкиваются, вместо них выходит новый полосатик. Длинные наблюдения, проводимые нашими учеными, показали, что вес нового полосатика не равна сумме весов двух пропавших полосатиков, которые столкнулись; однако, они скоро обнаружили, что когда два полосатики с массами m 1 и m 2 сталкиваются, вес

полосатика, вышедший равна 2.

 

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

Вам нужно написать программу, которая помогает ответить на этот вопрос. Вы можете считать, что 3 или более полосатиков никогда не сталкиваются одновременно.

входные данные

Первая строка входного файла содержит одно целое число N (1 N 100) — количество полосатиков в колонии.Каждый из последующих N строк содержит одно целое число от 1 до 10000 — вес соответствующего полосатика.

Исходные данные

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

Задача 12.

(XXIII областная олимпиада, 2009 год)

В числовой последовательности a 1, a 2, a 3, … известен первый член, а все остальные находятся по формуле a i = (a i-1) 2 mod 10000.Найдите N-й член этой последовательности.

 

Задача 13. «Последовательность Хэмминга»

(Заочная олимпиада, 2000-2001)

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

2 3 4 5 6 8 9 10 12 15 16 18 …

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

Выходные данные: в первой строке входного потока содержится число n. 1 <= n <= 1500.

 

Задача 14. последовательность

(Заочная олимпиада, 2001-2002)

Дано натуральное число k (<= 100000). Напечатать k-ю по порядку цифру последовательности 149162536 …, в которой выписаны подряд квадраты натуральных чисел.

Входные данные: в файле INPUT.DAT натуральное число k.

Выходные данные: вывести в файл OUTPUT.DAT k-ю цифру в последовательности.

Пример 1. Пример 2.
INPUT.DAT INPUT.DAT
10 9000
OUTPUT.DAT OUTPUT.DAT
4 3

Задача 15. строка

(Заочная олимпиада, 2001-2002)

Дана строка с N символов (1 <= N <= 1000). Далее выписываются сначала все однолитерни подстроки данной строки, затем двухбуквенное и т.д. Например, если строка abcad, то выписаны подстроки:

a, b, c, a, d, ab, bc, ca, ad, abc, bca, cad, abca, bcad, abcad или убрав комы: abcadabbccaadabcbcacadabcabcadabcad

Необходимо указать, какая будет K-и буква в выписанном строке. Входные данные: число K и входная строка.

Выходные данные: искомый символ

пример:

7

abcad

 

 

ответ:

b

 

 

Задача 16. «Сегменты»

(Заочная олимпиада, 2003-2004)

Определим множество S следующим образом. S [0] — отрезок [0; 1]. Разделим отрезок [0, 1] на три части точками 1/3 и 2/3 и удалим промежуток (1/3; 2/3). Получим S [1], содержащий два отрезка [0; 1/3] и [2/3, 1]. Каждый из них разделим на три части (точками 1/9 и 2/9 первый и 7/9 и 8/9 второй) и удалим средние частицы, то есть отрезки (1/9; 2/9) и (7/9, 8 / 9). Те отрезки, останутся образуют S [2]. И т.д.

По известным числом m из предложенного набора дробей вида a / b определить те, которые принадлежат указанной множестве S [m].

Технические условия:

Входные данные находятся в файле «PIESEC.DAT», который имеет структуру:

 

в первой строке единственное число m (0 <= m <= 100);

дальше записаны дроби в виде a / b (0 <a, b <= 6000000) по одному в каждой строке.

Результат — найдены дроби вывести в файл «PIECES.SOL» по одному в каждой строке.

Пример 1:

 

PIESEC.DAT   PIESEC.SOL
1 1/1  
1/1 1/3  
1/2    
1/3    
Пример 2:

PIESEC.DAT

   

PIESEC.SOL

3 1/3  
1/2 1/4  
1/3 1/9  
1/4    
1/5    
1/6    
1/7    
1/8    
1/9    
Пример 3:

PIESEC.DAT

   

PIESEC.SOL

25 172907/2000907
162001/1990001 4171979/5999979
172907/2000907  
4171979/5999979  

Задача 17. «Числовая последовательность»

(Заочная олимпиада, 2003-2004)

Данная последовательность натуральных чисел 7, 11, 13, 14, 19, 21, 22, 25, …. Написать программу, которая по заданному N (1 <= N <= 2000000000) находит

N-й член этой последовательности. Входные данные: число N.

Выходные данные: соответствующее число.

пример входящих данных Пример выходных данных: 22 июля

 

Задача 18. «Последовательность Хэмминга»

(Заочная олимпиада, 2003-2004)

Числами Хэмминга называются натуральные числа, которые имеют только делители 2, 3 и 5 в любом целом неотъемлемом степени. Первые члены этой последовательности выглядит следующим образом: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15 …

Первому числу этого ряда соответствуют нулю степени данных делителей. Составить программу, которая по заданному N (N <= 1600) выдает N-й член последовательности.

Ограничения: размер файла меньше 3 КБ. Входные данные: число N.

Выходные данные: соответствующее число.

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

10 Декабря

 

 

Задача 19. «Лента Фибоначчи»

(Заочная олимпиада, 2003-2004)

Определим ряд лент Фибоначчи следующим образом. S [1] = «a», S [2] = «b», S [i] = S [i-2] + S [i-1],

где операция «+» означает «склеивания» двух лент в одну.

Необходимо определить, какая буква будет n-й буквой ленты S [45].

1 <= n <= 1134903170.

Входные данные:

Входной поток содержит в первой ленте единственное число — значение n.

Исходные данные:

В выходной поток следует поместить одну букву, находящегося в позиции n в ленте S [45].

пример:

Входной поток: 701408733 Выходной поток: b

 

Задача 20. «Интересная последовательность»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт

Василько познакомился с двоичной системой счисления и был поражен, что в ней есть только две цифры: 0 и 1. Но хорошо зная десятичную систему счисления он заметил, что степени числа 10 также состоят только из нулей и единиц. Вот одна из его последовательностей, которая требует большого мастерства, чтобы ответить на Василькове вопрос. Построим последовательность, которая будет состоять из степеней 10: 110100100010000 …. Напишите программу, которая сможет по указанному порядковым номером определить цифру этой последовательности.

Входные данные:

Первая строка стандартного входного потока содержит N (1 <= N <= 65535) — количество тестов. В i-м с N следующих строк записано целое Ki — номер позиции в последовательности (1 <= Ki <= 2 ^ 31-1).

Исходные данные:

В стандартный выходной поток вывести через пробел последовательность цифр, которые соответствуют позициям Ki.

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

 

Пример входных данных: Пример выходных данных:
4 0 0 1 0
3  
14  
7  
6  

Рекурсия, перебор

 

Задача 1.

(I и областная олимпиада, 1988 год)

Поселок состоит из N домов, расположенных вдоль прямой дороги с одной стороны на равных расстояниях. В поселке проводят телефонную связь. В таблице Т указано, сколько телефонных аппаратов надо установить в каждом доме. Написать алгоритм, который определяет, в каком доме нужно установить АТС, чтобы суммарное расстояние от АТС до всех телефонных аппаратов была минимальной. Каждый телефон связан с АТС отдельным проводом.

 

Задача 2.

(I и областная олимпиада, 1988 год)

Составить алгоритм, который выбирает все четырехзначные числа, в записи которых нет цифр 1 и 9.

 

Задача 3.

(I и областная олимпиада, 1988 год)

В некотором городе все улицы проходят с севера на юг и с запада на восток. На Некоторых перекрестках установлены телефоны-автоматы. Для каждого такого перекрестка заданы его координаты X [i], Y [i] и количество автоматов на нем Т [i], i = 1, …, N. Написать алгоритм, определяющий координаты АТС, при которых сумма длин проводов, идущих от АТС к каждому автомату минимальна. Провода разрешается прокладывать только вдоль улиц (то есть, с севера на юг или с запада на восток).

Задача 4.

(ИIИ областная олимпиада, 1989 год)

Составить алгоритм, который получает на входе число K и выдает Ke по порядку четырехзначное число, у которого никакие две цифры не равны между собой. Первым таким числом считать 0123.

 

Задача 5.

(ИIИ областная олимпиада, 1989 год)

Составить рекурсивный алгоритм вычисления наибольшего общего делителя двух натуральных чисел.

 

Задача 6.

(ИIИ областная олимпиада, 1989 год)

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

 

Задача 7.

(ИIИ областная олимпиада, 1989 год)

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

 

Задача 8.

(ИIИ областная олимпиада, 1989 год)

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

 

Задача 9. нумерация клеток

(VI областная олимпиада, 1992 год)

Одна из клеток прямоугольной доски M x N закрашена.Пронумеруйте другие клетки числами 1, 2, 3, … так, чтобы две клетки с соседними номерами имели общую сторону.

Задача 10. «Три звездочки в шестизначного числа»

(VII областная олимпиада, 1993 год)

Заменить в числе 523 *** звездочки такими тремя цифрами, чтобы полученное шестизначное число делилось одновременно на 7, 8, 9.

 

Задача 11. «Оплата покупки»

(VII областная олимпиада, 1993 год)

Купоны многократного пользования Украины имеют стоимость A 1, A 2, A 3, …, A n рублей.Как оплатить покупку стоимостью в S рублей, используя наименьшее количество купонов.

 

Задача 12. «Сумма кубов»

(VII областная олимпиада, 1993 год)

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

 

Задача 13.

(X областная олимпиада, 1996 год)

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

492

357 (4 + 9 + 2 = 3 + 5 + 7 = 8 + 1 + 6 = 4 + 3 + 8 = 9 + 5 + 1 = 2 + 7 + 6 = 4 + 5 + 6 = 2 + 5 + 8 = 15)

816

Найти все магические квадраты 3 * 3, состоящие из натуральных чисел и удовлетворяют трем требованиям:

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

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

3) каждое число магического квадрата не превышает 1996.

Обратите внимание: приведенный пример магического квадрата этим требованиям не удовлетворяет! Квадраты, которые можно получить друг из друга симметриями, считайте разными.

Вывести на экран и в файл SQUARE.OUT количество найденных квадратов, а также сами квадраты в удобном для проверки виде.

 

Задача 14. «Шахiвниця»

(X и областная олимпиада, 1997 год)

В квадратные доске размером nxn клiтинок вырезали некоторые две клеточку. Итак, достали доску, состоящую из n2-2 клiтинок. Есть также (n2-2) / 2 дощечки размером 1 х 2 клiтинок, каждую из которых разрешается класть на доску так, чтобы накрывались ровно две ее клеточку. Дощечки не могут перекрываться.

Дано: n — длину стороны доски (в клеточку) (x1, y1), (x2, y2) — координаты вырезана клiтинок, 1 <= x1, y1, x2, y2 <= n.

Получить: ответ на вопрос — можно накрыть дощечками размером 1 х 2 все клеточку заданной доски? Если да, то указать, как это сделать.

 

Задача 15. «Отрезок»

(XИИ областная олимпиада, 1998 год)

Заданное число N — количество точек на плоскости, и числа X1, Y1, X2, Y2, … XN, YN — координаты точек. Нужно составить программу LINE. *, Определяющая координаты концов отрезка наименьшей длины и длину отрезка. На экране изобразить точки и искомый отрезок.

Задача 16. «Международная конференция»

(XИИ областная олимпиада, 1998 год)

Вас наняли для того, чтобы определить места дипломатов за столом обсуждений международной конференции. На конференцию приглашены по одному дипломату из N pизних стран мира. Каждый дипломат знает от одной до M языков. Дипломаты, которые не знают общего языка, не могут разговаривать друг с другом. К тому же, некоторые страны объявили, не будут поддерживать дипломатических отношений с некоторыми другими, то есть пpедставникы этих стран не будут pозмовляты друг с другом. Ваша задача заключается в разработке программы DIPLOMAT. *, Определяющий места за столом для дипломатов таким образом, чтобы каждый мог разговаривать с обоими своими соседями, которые сидят слева и пpаворуч от него.

Стол, который используется, — кpуглий и рассчитан на N пеpсон. Дипломат может общаться с дипломатом, который сидит слева на одном языке, а с дипломатом сидящий справа — другой.

 

Задача 17. «Числа (+ -)»

(XVI областная олимпиада, 2002 год)

В строку выписано N чисел (1 <= N <= 40). Нужно перед каждым числом поставить знак «+» или «-» так, чтобы значение полученного выражения было равно K.

Входные данные:

в первой строке числа N и K.

во втором N целых чисел в пределах [0..20].

Исходные данные:

результирующий выражение, в котором знаки и числа отделены одним пробелом.

пример:

3 июля

10 14 марта

ответ:

— 10 + 14 + 3 = 7

 

 

Задача 18. «Треугольники»

(XVII областная олимпиада, 2003 год)

В текстовом файле TRIANGLE.DAT через пробел записаны 10 различных натуральных чисел (каждое из которых не превышает 5000). Нужно построить алгоритм и реализовать его в виде программы TRIANGLE.PAS (BAS или CPP), что прочитает данные из файла TRIANGLE.DAT, подсчитает количество разносторонних треугольников, длинами сторон которых служат данные числа и результат выведет в файл TRIANGLE.SOL.

Пример: TRIANGLE.DAT

1 3 5 9 15 25 45 75 125 500

TRIANGLE.SOL 0

 

Задача 19. «Симметричные простушки»

(XVII областная олимпиада, 2003 год)

Число называется простым, если оно имеет только два делителя: 1 и само число. Назовем число «симметричным», если его десятичная запись читается одинаково слева направо и Cправа налево (151, 2002, …).В файл SYMETR. * (Где

* Означает расширение разрешенной языка программирования PAS для Pascal, CPP для С ++, BAS для Basic) запишите программу, которая подсчитает количество простых «симметричных» чисел в указанном диапазоне [n, m], где 10 <n <m <100000000 .

Входные данные:

В первой ленте входного потока содержится два числа n и m разделены одним пробелом.

Исходные данные:

 

Вывести в первую ленту исходного потока единственное число, являющееся количеством простых «симетичних» чисел из указанного диапазона.

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

10100

20000 345678

10 100000000

Выходные данные 1

67

777

 

 

Задача 20. «Шифровка»

(XVIII областная олимпиада, 2004 г.)

Известно, что участники областной олимпиады Дунець Павел, Печеный Александр и Райчук Антон на зимние каникулы приглашались на сборы по результатам успешного выступления на прошлогодней Всеукраинской олимпиаде, состоявшейся в Донецке. Для них и всех остальных участников областной олимпиады жюри составило шифровку, которая записана в файле text.dat. Шифрование не известен, но известно, что буквы и другие символы не менялись. Изменено только место их расположения. Вам следует получить расшифрован текст и записать его в файл uxxxn2.txt, где xxx — Ваш регистрационный номер (при необходимости регистрационный номер уточните у дежурного члена жюри).

 

Задача 21. «Телепортация»

(XVIII областная олимпиада, 2004 г.)

Рассмотрим прямоугольную декартову систему координат O XY (будем считать ее моделью Вселенной).Предположим, что в точке (x 1, y 1) находится космический корабль.За одну секунду с точки (x, y) он может телепортироваться в точки (x + C, y + C), (x + C, yC), (xC, y + C), (xC, yC), где C — произвольное

натуральное число. Какое минимальное время понадобится кораблю для того, чтобы достичь точки (x 2, y 2)?

введение

Ваша программа должна вводить с клавиатуры числа x 1, y 1, x 2, y 2.Числа x 1 и y 1 должны быть введены в первой строке, числа x 2 и y 2 — во втором строке.

вывод

Если можно достичь точку (x 2, y 2) с точки (x 1, y 1), то выведите на экран минимальное время в секундах, необходимое для этого.В противном случае выведите на экран число 0.

пример

введение

0 02

0 2

вывод

В данном примере к успеху приводит такая последовательность телепортаций:

(0, 0) — (1, 1) — (0, 2).

Ограничения.

0≤x 1, y 1, x 2, y 2 ≤1000000000; все числа при вводе цели; точки (x 1, y 1) и (x 2, y 2) не совпадают.

Замечания.

Если ваша программа выдает одинаковый ответ на всех тестовых примерах, то она получит 0 баллов.

 

Задача 22. «Дед Мороз и компьютерные хулиганы»

(XIX областная олимпиада, 2005 год)

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

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

Помогите Деду Морозу раскодировать и прочитать остальные писем.

Технические условия:

В файле SURPRISE.ORI находится оригинал письма, в файле SURPRISE.KOD закодированный текст.

Ваша программа должна прочитать данные из файла SURPRISE.KOD и вывести оригинал письма в файл SURPRISE.ORI

 

Задача 23. «Сиамские простушки»

(XX областная олимпиада, 2006 год)

Число называется простым, если оно имеет только два делителя: 1 и само число.

Назовем число «сиамским простачком», если:

— оно является простым;

— его десятичная запись читается одинаково слева направо и справа налево;

— первые (k div 2) +1 цифр и последние (k div 2) +1 цифр образуют простые числа, где k — количество цифр данного числа.

Например: число 3541453 есть «сиамским простачком», потому что число 3541453 является простым, а также каждое из чисел 3541 и 1453 являются простыми числами.

Напишите программу, которая выводит «сиамские простушки» из указанного диапазона [n, m], где 100 <n <m <= 10000000 или сообщение NO, если таких чисел в указанном диапазоне нет.

Входные данные:

В первой строке текстового файла syamsimp.dat содержится два целых числа n и m разделены одним пробелом.

Исходные данные:

Вывести в текстовый файл syamsimp.sol «сиамские простушки» из указанного диапазона в порядке возрастания.Каждое новое число в новой строке или сообщение NO, если таких чисел в указанном диапазоне нет.

syamsimp.dat syamsimp.sol
101352 131

313

2007 7002 NO

 

 

 

Задача 23. «И снова скобки»

(XX областная олимпиада, 2006 год)

Данная строка, состоящий из символов «() [] {}». Определить, какое наименьшее количество символов необходимо вставить в эту строку, чтобы он превратился в правильное выражение со скобками.

Входные данные: в первой строке входного потока содержится заданная строка символов.Длина строки не превышает 100 символов.

Выходные данные: в первую строку выходного потока вывести одно число — наименьшее количество символов, которые необходимо вставить в данную строку символов, чтобы он превратился в правильное выражение с скобками.

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

{(})

Пример выходных данных, соответствующих входным 2

 

Задача 24. «Прямоугольник»

(XXII областная олимпиада, 2008 год)

Тарас решил разрезать прямоугольную страницу в клеточку размера n?m ячеек на квадраты. Сначала он отрезает как можно больший квадрат, используя один прямой разрез. Затем он убирает полученный квадрат и повторяет действие с прямоугольником, что остался. так поступать (весь время

отрезая как можно больший квадрат) Тарас продолжает до тех пор, пока прямоугольник, оставшееся время не будет квадратом.

Ваша задача — написать программу, которая по введенным значениям n и m (n <10000, m <10000) вычисляет, как много квадратов Тарас получит вырезанием из прямоугольника описанным выше путем.

примеры

Введение Вывод Комментарий

3 июля 5 Прямоугольник был разрезанный

на квадраты с длинами 3, 3, 1, 1, 1

 

 

Задача 25. «Стрелочки»

(XXII областная олимпиада, 2008 год)

На бумаге нарисовали клетчатое (в клеточку) поле N x M ячеек.В каждой ячейке нарисовали стрелку в одном из четырех направлений «вправо»,

«Вверх», «влево» или «вниз».

 

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

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

Входные данные

Во входном файле заданы изначально размеры поля — число строк N и число столбцов M (1≤ N ≤1000, 1≤ M ≤1000).Далее идет N строк по M чисел в каждой, которые задают направления стрелок в клетках.Число 1 обозначает стрелку вправо, 2 — вверх, 3 — влево, 4 — вниз. Числа в строке разделяются пробелами.

Выходные данные

В выходной файл выведите одно число — количество ячеек, начав с которых фишка никогда не покинет пределы поля.

примеры

 

f.in f.out замечания
6 мая 23 Этот пример соответствует приведенному
3 1 1 4 2   рисунке. Ячейки, начав с которых,
1 февраля 4 3 1   фишка никогда не покинет пределов поля на
2 апреля 1 1 4   рисунке выделены серым цветом.
1 2 3 3 марта    
3 1 4 4 апреля    
2 2 3 4 2    
2 февраля  
1 февраля  
4 марта  

 

 

 

Задача 26.

(XXIII областная олимпиада, 2009 год)

Возьмем любое натуральное число и добавим к нему сумму его цифр. Полученное число называется порожденным, а первое число — генератором порожденного числа.

Например, 47 + 4 + 7 = 58. 58 — порожденное число, а 47 — его генератор.

Найдите для данного натурального числа N (N <10 ^ 16) его генераторы. В первой строке вывести количество, во втором через пробел генераторы в порядке их возрастания.

Задача 27.

(Заочная олимпиада, 2000-2001)

На рисунке изображена фигура.Существует способ заполнения ячеек фигуры натуральными числами от 1 до 19 так, чтобы сумма элементов в произвольной диагонали равна 38. В фигуре 15 правильных диагоналей. Все числа в ячейках должны быть разными.

Задача: в файл MAGIK.SOL необходимо вывести все возможные

заполнения фигуры согласно условию задачи (симметричные заполнения считаются различными).

Выходные данные: каждое заполнения фигуры в исходном файле должно занимать шесть строк:

первый — 3 числа через пробелы; второй — 4 числа; третий — 5 чисел; четвертый — 4 числа; пятый — 3 числа; шестой — пустая строка. Далее следующее заполнения.

Примечание: каждое правильное заполнение добавляет баллы, а неправильное — отнимает.

 

Задача 28.

(Заочная олимпиада, 2000-2001)

Имеется 10 фишек изложенных в ряд. Каждая фишка белая с одной стороны, и

черная с другой.  Ход делается так: выбирается любая фишка, и она

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

Например:

ЧБЧ БЧЧ БББ

Ваша программа должна записать в первую строку выходного потока

число N количество ходов, а во второй строке N чисел разделенных пробелами (номера выбранных фишек на каждом ходу)

Выходные данные: в первой строке входного потока содержится строка с 10символив, которая определяет исходное состояние всех фишек (Б — белая, Ч — черный)

 

Задача 29. камень

(Заочная олимпиада, 2001-2002)

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

Поле действия — 11 на 11 клеток со стороной, равное стороне камня (вид сверху). Каждая клетка может быть занятой клумбой или свободной.  Верх поля — север. Камень стоит посреди поля в клетке с координатами (6,6). Табличка с восточной стороны в правильном положении. Перекатывание камня переводит его на соответствующую соседнюю клетку с соответствующим изменением положения таблички.

Во входном потоке содержится 11 лент по 11 непробильних символов в каждой. Символы могут быть только «.» (Точка) и ‘0’ (ноль). Символы могут быть произвольно разделены пробелами. Точка обозначает свободную клетку, ноль обозначает клетку, которая занята клумбой. Первая лента — северная сторона поля. Соответственно слева мероприятие, дело восток. Шестая позиция в шестой картине всегда ‘X’ (большая латинская икс), обозначающий исходное положение камня.

Вывести в выходной поток ленту символов, задающие последовательность перекатов камня следующим образом:

N — перекатывание к северу E — на восток;

S — на юг; W — на запад.

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

Пример.

Вход: . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . 0 0. 0 0. . .

. . . . . X. . . . .

. . . 0 0. 0 0. . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

Выход: NNENWWSESS

 

 

Задача 30.

(Заочная олимпиада, 2001-2002)

Есть 19 типов разноцветных тетрамоничних фигурок (смотрите рисунок).

С клавиатуры в первой строке вводятся два числа N и М — размеры прямоугольника, который необходимо заполнить фигурками; во второй строке 19

чисел — имеющееся количество фигурок каждого типа.(N — количество строк. N <= M <24)

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

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

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

8 Марта

1 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 1

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

1

QZZTTTII QQZZTCCI

QAAAACCI

 

 

Задача 31. «Planeta X»

(Заочная олимпиада, высшая лига, 2005-2006)

Или мы во Вселенной? Этот вопрос издавна волнует человечество. После недавних сенсационных раскопок на планете Х13 были найдены листки с таинственными символами. Длинные исследования ученых показали, что надписи могут быть числовыми выражениями. Если их вывод верен, то на планете Х13 много тысячелетий назад могли существовать разумные существа, поскольку они умели считать.

Ученые смогли понять, что означают пользователя символы, и перевели все на обычный язык — язык цифр, скобок, знаков арифметических действий и равенства. Кроме того, стало ясно, что на данной планете возможные жители знали три операции: сложение, умножение и вычитание (они никогда не использовали «унарный минус»: вместо «-1» они записывали «0-1»).  Также ученым удалось установить, что арифметические операции не имели

 

приоритетов, а выражения просто исчислялись слева направо, если в них не было скобок: например 3 + 3 * 5 в них равнялось 30, а не 18.

К сожалению Х-планетян, назовем их так, имея познания в математике, плохо разбирались в химии. Чернила, которыми были списаны листья ни были устойчивыми ко времени и, мне тоже показалось это странным, знаки операций исчезли — остались только вместо них пробелы. Если теория ученых верна, то когда вместо пропусков поставить знаки арифметических операций — выражение будет правильным. Например, на листе есть надпись «18 = 7 (5 3) 2». Возможна такая расстановка знаков: «18 = 7 + (5-3) * 2». В то же время, если попадался запись «5 = 3 3», то братья по разуму, наверное, имели в виду что-то другое …

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

Входные данные:

Первая строка входного файла Planeta.in состоит из натурального числа не более 2 ^ 30 знака равенства, и последовательности натуральных чисел (не более 10), произведение которых не более также 2 ^ 30.Некоторые группы цифр могут быть в скобках. Длина строки не превышает 80 символов. Между соседними числами всегда есть хотя бы один пробел, во всех других случаях может быть любое количество пропусков (в том числе и 0). Внутри числа Х-планетян пропусков не ставили.

Исходные данные:

В выходной файл Planeta.out необходимо вывести одну строку, содержащую образованную равенство или «-1», если расстановка знаков невозможна для правильной равенства.Выходной строка не должна содержать пробелов.

Например:

 

Planeta.in Planeta.out
18 = 7 (5 3) 2 18 = 7 + (5-3) * 2
5 = 3 марта -1

Задача 32. «Имена»

(Заочная олимпиада, первая лига, 2006-2007)

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

Входные данные: в первой строке стандартного входного потока задается целое N (N <= 10000) — количество возможных имен.В следующих N строках записаны сами имена, содержащие только символы латинского алфавита и имеют длину не больше 20.Затем в новом строке содержится целое K (K <= 10000) — количество использованных имен.Далее идет перечень этих имен в отдельных строках.

Выходные данные: в отдельных строках стандартного выходного потока вывести те имена, которые являются свободными для использования.

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

4

Mario Nensi Gig Joss

2

Joss Nensi

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

Mario Gig

Задача 33. «Судоку»

(Заочная олимпиада, 2008-2009)

Поле для игры в судоку имеет размер 9х9 клеток и условно разбито на 9 квадратов размером 3х3.

Каждая клеточка является или пустой, или содержит число от 1 до 9.

пример:

389 | 7 ..| 2 ..

672 | .5.| .1.

.14 ​​| 6.9 | ..3

———— 23.| 5 ..| 871

85.| .37 | .49

497 | 81.| 3.5

————

.65 | 482 | 13. 1.3 | .7.| 46.

74.| 1.3 | 59.

Вам необходимо расставить в пустые клеточки числа от 1 до 9 так, чтобы

1) в каждой строке число не повторялись

2) в каждом столбце число не повторялись

3) в каждом из 9-ти условных квадратов числа не повторялись Для вышеприведенного примера ответ следующая:

389 | 741 | 256

672 | 358 | 914

514 | 629 | 783

———— 236 | 594 | 871

851 | 237 | 649

497 | 816 | 325

————

965 | 482 | 137

123 | 975 | 468

748 | 163 | 592

Входные данные:

В стандартном входном потоке записаны 9 строк по 9 чисел. (Числа разделены пробелами). Пустая клетка обозначена числом 0. Нулей (пустых ячеек) будет не более 29

Исходные данные:

в стандартный выходной поток запишите ответ с заданным судоку — 9 строк по 9 чисел в каждой (разделенные пробелами !!!)

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

3 8 9 7 0 0 2 0 0

6 7 2 0 5 0 0 1 0

0 1 4 6 0 9 0 0 3

2 3 0 5 0 0 8 7 1

8 5 0 0 3 7 0 4 9

4 9 7 8 1 0 3 0 5

0 6 5 4 8 2 1 3 0

1 0 3 0 7 0 4 6 0

7 4 0 1 0 3 5 9 0

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

3 8 9 7 4 1 2 5 6

6 7 2 3 5 8 9 1 4

5 1 4 6 2 9 7 8 3

2 3 6 5 9 4 8 7 1

8 5 1 2 3 7 6 4 9

4 9 7 8 1 6 3 2 5

9 6 5 4 8 2 1 3 7

1 2 3 9 7 5 4 6 8

7 4 8 1 6 3 5 9 2

Задача 34. «Запросто»

(Заочная олимпиада, 2008-2009)

Дано n чисел, 3 <= n <= 1000, -1000 <= xi <= 10000. Найти среди них два таких числа xa и xb, что их сумма равна сумме всех других чисел, остались.

Входные данные:

В первой строке входного потока содержится одно число n. Во второй строке входного потока содержится n чисел xi, разделенных пробелом.

Исходные данные:

В первую строку выходного потока вывести два числа xa и xb разделенных одним или более пробелами. Если невозможно найти таких два числа — вывести числа 0 и 0.

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

5

-5 2 5 3 5

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

3 февраля

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

4

6 февраля -4 1

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

0 0

Время работы программы не должен превышать 5 сек на Intel Core 2 Duo E2180.

 

Задача 35. «Куб»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт Имя входного файла: b.in

Имя выходного файла: b.out

Дано трехмерный массив А целых чисел размерности N, M, K который удобно представить в виде куба, состоит из кубиков 1х1х1. В каждом кубе 1х1х1 записано целое число. Этот куб содержит N горизонтальных

«Уровней», а каждый уровень в свою очередь состоит из M строк и K столбцов.

Необходимо найти подмассив этого массива сумма цифр которого максимальна.    То есть найти такие индексы и1, j1, k1, i2, j2, k2

 

что максимальная.

Входные данные:

Первая строка входного файла b.in содержит числа N, M, K. Далее следуют N блоков каждый из которых содержит M строк, по K чисел в каждом — элементы массива А. Блоки отделены друг от друга пустым строкой.

Исходные данные:

Выведите в выходной файл b.out единственное число — максимальную сумму.

ограничения:

1 <= N, M, K <= 30, элементы массива — целые числа из промежутка — 1000..1000.

Условия тестирования:

До 40 баллов получит решение, которое корректно работает для N = 1 или M = 1 или K = 1.

 

1000.

До 55 баллов получит решение, которое корректно работает для N * M * K <=

 

 

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

 

Пример входных данных: Пример выходных данных:
2 февраля 2 26
7 Февраля  
3 февраля  
1 3  
4 июня  
1 3 3 38
10 апреля -1  
-2 10 мая  
5 -3 10  

Сортировка

 

Задача 1. «Сортировка четырех»

(V областная олимпиада, 1991 год)

Таблица a [1: k] состоит из цифр a, b, c, d, которые могут повторяться.Отсортировать эту таблицу так, чтобы сначала были записаны все числа d, затем с, затем b и только потом я.Дополнительную таблицу не использовать.

 

Задача 2. «Объединение таблиц»

(V областная олимпиада, 1991 год)

Даны две упорядоченные по возрастанию таблицы A [1: m], B [1: n].Составить алгоритм построения из этих таблиц упорядоченной по возрастанию таблицы C [1: k], k = m + n.

 

Задача 3.

(Заочная олимпиада, 2000-2001)

Дано действительное число x (не более 10 знаков вместе с десятичной точкой), натуральное n <= 1000 и элементы a 0, a 1, … a n (-30000 <= a i <= 30000).

Используя данные элементы можно получить поленом:

P (x) = a n x n + a n-1 x n-1 + … a 1 x + a 0.

Пересортуйте элементы a 0, a 1, … a n так, чтобы поленом приобрел максимального значения.

Входные данные: в первой строке текстового файла POLINOM.DAT записано действительное число x, во втором — натуральное число N, в следующих N + 1 строках коэффициенты полинома, начиная со свободного члена a 0.

Выходные данные: в текстовый файл POLINOM.OUT выведите решение в

следующем формате:

в N + 1 строках коэффициенты полинома, начиная со свободного члена a 0; дальше значения полинома при новом расположении коэффициентов.Значения полинома необходимо вывести с точностью до 3-х десятичных знаков.

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

-2.5

3

1

3

3

1

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

3

1

3

1

13.625

 

 

Задача 4. Сортировка

(Заочная олимпиада, 2001-2002)

Напишите программу, которая отсортирует по неубывания N чисел. Известно, что 1 <= N <= 1000000, а числа цели, и по абсолютной величине не превышают 100.

С клавиатуры вводится число N, и числа для сортировки, разделенных пробелами.

Отсортированный список чисел вывести на экран, отделяя числа друг от друга пробелом.

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

7 3 -4 3 1 6 -77 6

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

-77 -4 1 3 3 6 6

Задача 5. произведение

(Заочная олимпиада, 2001-2002)

Дано N целых чисел в диапазоне [-10000..10000] (1 <= N <= 100).

Необходимо выбрать те из них, чей произведение будет максимальным.

Входные данные: в первой строке число N, во втором N чисел.

Выходные данные: Числа, в произвольном порядке, произведение которых будет максимальный.

пример:

5

2 -3 7 0 4

ответ:

7 4 февраля

 

 

Задача 6. «Последовательность»

(Заочная олимпиада, первая лига, 2005-2006)

В файле Z3.DAT записана последовательность двузначных натуральных чисел разделенных пробелами.Длина последовательности неизвестна, но не превышает 1000000.

Напишите программу, которая запишет все числа, входящие в последовательность в файл Z3.SOL в неспадаючому порядке.

Пример входных и выходных файлов: Входной файл Z3.DAT 45 56 78 45

Выходной файл Z3.SOL 45 45 56 78 Время на тест: 3 с

 

Задача 7. «Калькулятор»

(Заочная олимпиада, высшая лига, 2006-2007)

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

 

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

2) каждая пара удаляется из памяти и вместо нее заносится произведение чисел этой пара;

3) находится сумма всех чисел, которые находятся в памяти.

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

Входные данные.В первой строке файла calc.dat находится число N (1 <= N <= 100).Во второй строке N целых чисел, каждое из которых по модулю не превышает 100, числа могут повторяться.

Исходные данные.В единственную строку файла calc.sol выведите одно число — результат выполнения программы на калькуляторе.

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

calc.dat

5

0 1 2 3 4

calc.sol

15

Примечание: 15 = 0 + 1 + 2 + (3 * 4)

структуры данных

 

Задача 1. «Площадь земельного участка»

(Заочная олимпиада, 2009-2010)

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

Ограничение: 3 <= N <= 50000. Координаты по модулю не превышают 20000. Время 1с. Стороны многоугольника без же сечений и не имеют общих точек (кроме соседних — в вершинах)

Входные данные: в текстовом файле square.in в первой строке записано число N — количество вершин многоугольника, а в следующих N строках пары чисел — координаты вершины.

Выходные данные: в текстовый файл square.out записать единственное число — площадь земельного участка. Результат вывести с одним знаком после комы.

Пример 1:

Входной файл: square.in

4

5 0

0 5

-5 0

0 -5

Выходной файл: square.out

50.0

теория графов

 

Задача 1.

(ИIИ областная олимпиада, 1989 год)

Схема дорого между населенными пунктами представлена ​​целочисленной таблицей А [1: n, 1: m]. Элемент таблицы A [i, j] = 1, если существует дорога между i-м и j-м населенными пунктами, и A [i, j] = 0, если дороги нет. Составить алгоритм, который проверяет существует хотя бы два населенных пункта между которыми нет пути (проходит, быть может, через несколько других населенных пунктов).

 

Задача 2. «Сеть»

(X и областная олимпиада, 1997 год)

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

Прохождение сообщение от одного компьютера к другому, непосредственно с ним соединенного, требует одну секунду (компьютеры расположены достаточно далеко друг от друга), i компьютер не вiдсилаты сообщение нескольким компьютерам одновременно.

В течение первой секунды начальный компьютер может послать сообщение одному из своих соседей. В течение второй секунды уже два компьютера (начальный и его сосед) могут послать сообщение своим соседям, i так далее.

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

Входные данные: Описание сети содержится в файле NET.DAT i имеет следующий формат:

строка 1: количество N компьютеров в сети (1 <= N <= 100)

строка 2: номер начального компьютера

строка 3: количество соседей компьютера 1, затем их номера, отделенные пробелами

. . .

строка N 2: количество соседей компьютера N, потом их номера, отделенные пробелами

Выходные данные: Результат надо вывести в файл NET.SOL.

 

 

Задача 3. «Расписание маpшpутiв»

(XИИ областная олимпиада, 1998 год)

Дано pозклад всех автобусных маpшpутiв города. Меpу города тpеба доехать с некоторой станции A до станции B за наименьшее время. Составьте программу BUS. *, Который определит самый необходимое время путешествия. Ехать можно с пересадками.

 

Задача 4. «Инкассаторы»

(XVIII областная олимпиада, 2004 г.)

Когда Максим Розуменко закончил финансовый колледж, он стал управляющим городского банка. Уже с первых дней работы Максим столкнулся с одной нерешенной для него проблемой.

В стране, где живет Максим, есть N городов. Некоторые из них связаны двухсторонними дорогами, которые пересекаются только в городах. Раз в месяц инкассаторы Максима должны доставить деньги в K сберегательные кассы. Все K сберегательные кассы находятся в разных городах. Пока банк Максима небогатый и имеет всего одну машину для перевозки денег. Вам необходимо помочь Максиму составить маршрут, который начинается в городе L (в этом городе находится банк Максима), проходит по всем K городах, где находятся нужные сберегательные кассы, и заканчивается также в городе L. Этот маршрут должен иметь минимальную длину (длиной маршрута назовем сумму длин всех дорог, входящих в этот маршрут).

Входные данные: input.txt

В первой строке через пробел записаны три числа: NMK, где N — общее число городов в стране, M — общее число двусторонних дорог, K — количество сберегательные кассы, которые должны посетить инкассаторы (без учета города L).

Во второй строке через пробел идут K чисел — номера городов, где находятся сберкассе.

Следующие M строк содержат описание дорог. В каждой строке описывается одна дорога в виде XYS, где X, Y — номера городов, которые связаны дорогой и S — длина этой дороги.

В последней строке дано число L — номер города, где находится банк Максима.

Выходные данные: output.txt

Единственная строка выходного файла должна содержать набор чисел — номера городов искомого маршрута в порядке обхода. Эти числа должны быть разделены одинарным пробелом. В случае, когда такого маршрута не существует, выходной файл должен содержать одно слово «NO».

Ограничения.

1 <N <= 100

0 <M <= N (N-1) / 2

0 <K <18 K <N

0 <S <= 50000

1 <= L, X, Y <= N

Все входные данные — натуральные числа.

 

input.txt output.txt input.txt output.txt
4 июня 3 1 3 2 4 января 6 сентября 2 1 2 6 4 3 5 2 1
2 4 3   4 марта  
1 февраля 10   1 24 марта  
2 4 3   1 февраля 10  
Sa 1 3 5   6 февраля 5  

1 апреля 4 2 5 6
2 марта 7 3 5 7
4 марта 8 4 марта 16
1 4 мая 9
  6 апреля 8
  5 июня 4
  1

 

 

Задача 5. «Отдаленные города»

(XIX областная олимпиада, 2005 год)

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

Входные данные: В первой строке файла cities.dat находится число N (2 <= N <= 1000).В следующих строках по три числа — i, j, s. 1 <= i <= n, 1 <= j <= n, 1 <= s <= 1000.(Длина прямой дороги между городами i и j равен s).

Выходные данные: В файл cities.sol нужно вывести расстояние между двумя отдаленными друг от друга городами.

Пример входных и выходных данных. cities.dat

5

1 февраля 10

2 марта 2

2 5 апреля

5 марта 2

cities.sol 15

Задача 6. «Железная дорога»

(XXII областная олимпиада, 2008 год)

Железная дорога в городе N-ске является замкнутой ломаной, которая не имеет пересечений. Периметр железной дороги равен L км.На железной дороге размещены K станций, пронумерованных от 1 до K по часовой стрелке.Расстояние между всеми парами соседних станций уровне. Поезд находится на первой станции и едет с постоянной скоростью V км / ч по часовой стрелке.Определить, на какой станции будет находиться поезд через T часов.

Входные данные.

Ваша программа должна вводить с клавиатуры числа L, K, V, T в указанном порядке.Каждое число будет вводиться в отдельной строке.

Исходные данные.

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

Пример.

введение Вывод

20 апреля

5

6

2

Ограничения.

L, К, V, T — целые числа; 3≤L, К≤10000; 0≤V, T≤10000; гарантируется, что расстояние между дорогой парой соседних станций выражается целым числом километров; гарантируется, что через T часов поезд будет находиться на некотором станции (а не между станциями).

 

Задача 7. «Escape»

(XXIV областная олимпиада 2010 год)

После того, как все узнали, что сделал Thunder, ему ничего не оставалось, как бежать от правосудия. Известно, что он нашел в Интернете

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

 

Задача 8. вирус

(Заочная олимпиада, 2001-2002)

В последнее время было обнаружено компьютерный вирус, который распространяется по электронной почте. Он основан на такой идее: если адресат пытается прочитать зараженное письмо, вирус использует «дыру» в популярной почтовой программе MacroHard NotLookHere 5.0 и инфицирует компьютер. На следующий день он рассылает зараженные письма всем знакомым владельца данного компьютера. Маленькой программист Вася хочет помешать проведению Хмельницкой областной заочной олимпиады, инфицировав вирусом компьютеры всех участников и жюри. Но он может направить инфицированного письма только одному человеку. Напишите программу, которая определит кому нужно послать письмо, чтобы заражения всех компьютеров произошло как можно быстрее.

Входные данные:

Файл INPUT.DAT в первой строке содержит число N (1 <= N <= 100), в каждой из следующих N строк по одному имени файла.

Каждый из этих N файлов описывает одного из участников и имеет следующую структуру: в первой строке имя участника,

во втором — его E-mail адрес,

в третьем число P — количество знакомых данного участника, в следующих P строках содержатся имена знакомых.

Выходные данные: вывести на экран в первой строке минимальное количество дней, которое необходимо для заражения всех компьютеров, во второй строке вывести E-mail адрес, на который нужно отправить зараженного письма.

пример:

файл INPUT.DAT

4

andrey.dat vasia.txt lamer.in single.txt

файл ANDREY.DAT

Andrey andr@myla.net 1

Doctor LAMER

файл VASIA.TXT

Super Vasia super@vasia.com 2

Doctor lamer ANDREY

файл LAMER.IN

Doctor laMer lamer@pingvin.fr 3

aNdReY SUPER Vasia SINGle

файл SINGLE.TXT

single

iknow@nobody.com 0

ответ:

2

lamer@pingvin.fr

Примечание:

Имя участника и E-mail адрес — строка не более чем из 30 символов. Существует хотя бы один участник, от которого вирус за определенное количество дней может распространиться по всем компьютерам.

 

Задача 9. «Гетманская реформа»

(Заочная олимпиада, 2003-2004)

У Чигирину, в степи широком Там могила скифа, воля казака, Они помнят красные скины, Слышат голос Гонты и Железняка …

Только что избранный гетман решил осуществить административную реформу на Украине. Поскольку войны в те времена шли почти непрестанно, главной задачей было выбрать столицу так, чтобы она была на максимально возможной расстоянии от опасных территорий. На территории гетманской Украины того времени находилось N <= 100, крупных узловых пунктов (городов, поселков). (Название пункта — последовательность заглавных латинских букв и символа «-» дефис, минус. Количество символов в имени не более 30).

Входные данные:

В первой строке два числа N, K и M. Далее K строк — названия опасных пунктов.

Далее M строк, каждая из которых содержит название первого пункта, название второго пункта, расстояние между ними.

Исходные данные:

 

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

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

7 Февраля 7

KONOTOP GUSIATYN

GUSIATYN KAMIANETS-PODILSKY 1

KAMIANETS-PODILSKY KANIV 3

KONOTOP KYIV 8

KANIV KYIV 2

KANIV BATURYN 1

KANIV CHYGYRYN 3

BATURYN CHYGYRYN 2

Ответ к примеру входных данных:

CHYGYRYN 7

 

Задача 10. «Game»

(Заочная олимпиада, высшая лига, 2005-2006)

Я предлагаю вам стать одним из разработчиков новой компьютерной игры.События игры будут происходить на прямоугольной доске размером W х H. Каждая клетка доски может содержать фишку или не содержать Ничего.

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

Пример возможных путей может быть таким:

Фишки с координатами (1,3) и (4,4) также имеют соединения.

Вам нужно написать программу, которая проверяет, можно ли соединить две фишки описанным образом и выводит длину пути из расчета, что путь между соседними клетками равен 1. Если такого пути не существует — вывести 0.

Входные данные:

Первая строка входного файла Game.in содержит два натуральных числа: W — ширина доски, H — высота (1≤W, H≤75).Следующие H строк содержат описание доски: каждая строка состоит из W символов: символ «Х» (большая английский буква «экс») обозначает фишку, символ «.» обозначает пустую клетку. Остальные строк содержат запросы: каждый состоит из четырех натуральных чисел разделенными пробелами — координат первой и второй фишек. Координаты не совпадают. Последняя строка содержит четыре 0 — этот запрос обрабатывать не надо, он указывает на конец ввода. Количество запросов не более 20.

Исходные данные:

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

Например:

 

game.in game.out
4 мая

XXXXX X …X XXX.X

.XXX. 2 3 5 3

1 3 4 42 3 3 4

0 0 0 0

5

6

0

4 апреля

XXXX

4

 

 

 

Задача 11. «Мудрец и шахматы»

(Заочная олимпиада, высшая лига, 2005-2006)

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

Но эта легенда имеет и другой финал.

— Слишком ты жадный мудрец, — рассмеялся царь. — Ведь во всей моей стране не найдется столько зерна.Ты мабудь издеваешься надо мной. но я предложу тебе другое вознаграждение.Поставь коня на шахматную доску. И я положу на эту клетку 128 монет.На каждую клетку, которой лошадь сможет достичь за один ход, я положу 64 монеты.На каждую клетку, чтобы достичь которой коню нужно минимум два хода, я положу 32 монеты.А так далее для каждой клетки доски, согласно наименьшего количества ходов конем, необходимые, чтобы попасть и соответствующую клетку.За каждый ход количество монет будет уменьшаться в два раза.Но если ты окажешься слишком жадным, и ты не можешь нести все монеты, которые получишь, то я прикажу отрубить тебе голову.Тайны, был физически сильным человеком, и знал, что не сможет понести более чем 1600 монет.Но он был мудрым человеком, и определил, на которую клетку следует поставить лошадь, чтобы получить наибольшее количество монет,

что не превышает 1600.

Задача: даны два целых числа, N и M. Где 64≤ N ≤2048, и N является степенью двойки — количество монет, которую царь положит на клетку с лошадью; 700≤ M ≤40000 — количество монет, которое может понести мудрец.Напишите программу, по данным N и M определяет все клетки шахматной доски, на которые мудрец может поставить лошадь, чтобы получить наибольшее количество монет, не превышает M.

Входные данные: в первой строке входного потока содержится два числа N и M разделены одним или более пробелами.

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

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

128 1600

Пример выходных данных, соответствующих входным:

c2 f2 b3 g3 b6 g6 c7 f7

 

 

Задача 12. «Царевич прячется»

(Заочная олимпиада, высшая лига, 2005-2006)

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

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

Входные данные: в первой ленте входного потока содержится три целых числа N, M и D. 2≤ N ≤30 — количество комнат во дворце; 1≤ MN — номер комнаты, где находятся царевич и его няня; D — количество дверей.В следующих D лентах входного потока находятся пары целых чисел 1≤ abN — номера комнат, между которыми есть дверь.Любая пара комнат соединена не больше, чем одной дверью.

Выходные данные: в первую ленту исходного потока вывести одно число K — количество комнат, их должен пробежать царевич, чтобы спрятаться, учитывая начальную комнату, и комнату, где он не станет.В следующую ленту исходного потока вывести K целых чисел, разделенных одним или более пробелами — номера комнат, через которые должна пробежать царевич.Если при данных условиях царевич не может спрятаться так, чтобы няня не нашла, то в первую ленту исходного потока вывести единственное число 0.

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

1 апреля 5

1 февраля

1 апреля

3 февраля

2 апреля

4 марта

Пример выходных данных, соответствующих входным:

4

1 4 2 3

 

 

Задача 13. «Преследование преступника»

(Заочная олимпиада, первая лига, 2006-2007)

В стране программе имеется имеется N городов.Некоторые пары городов соединены двусторонней дорогой. По данным полиции из города с номером A в город с номером B отправился опасный преступник.Для задержания этого преступника полиция решила

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

Входные данные: в первой строке файла chase.dat записаны через пробел числа N, K, A, B (2 <= N <= 50, 1 <= A, B <= N).В следующих K строках находятся по два числа — пары городов, между которыми существует дорога.

Выходные данные: в файл chase.sol нужно вывести одно число — минимальное количество дорог, которые нужно перекрыть, чтобы в результате не было свободного пути от A до В.

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

chase.dat

6 мая 5 февраля

1 февраля

1 мая

3 февраля

2 апреля

4 марта

4 мая

chase.sol

2

 

 

Задача 14. «Проблема« Синих »и« Оранжевых »

(Заочная олимпиада, высшая лига, 2006-2007)

На территории некоторого государства идут военные учебные маневры между двумя сторонами: «Синими» и «оранжевых». Особенности ландшафта и сложные климатические условия требуют подразделения обеих сторон располагаться только на территории некоторых населенных пунктов. Общее количество населенных пунктов в стране равна N.

Тактика ведения боевых действий «Оранжевых» рассчитана на нанесение противнику быстрых и внезапных ударов, что возможно лишь в

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

Разнообразие используемой боевой техники приводит к тому, что время передвижения различных боевых частей из одного пункта в другой разный, и определяется величиной Vj — скоростью движения подразделений воинской части расквартированной в j-м населенном пункте.

Используя огромное преимущество в технике, «Оранжевые» планируют организовать ночной налет на базы противника и полностью их разгромить. Все военные подразделения «Оранжевых» приступают к выполнению операции одновременно. Если боевая часть «Оранжевых» врывается в населенный пункт, занятий «Синими», то учитывая фактор внезапности, им удается полностью разгромить эту группировку.

Блестящем проведению этой операции помешало то, что через некоторое время T после начала операции «Синими» было осуществлено радиоперехвата сообщение об операции, которая началась.После радиоперехвата группировки «Синих» мгновенно рассеиваются в окрестных горах и остаются неповрежденными.

Выясните, какое количество группировок противника и в каких населенных пунктах «Оранжевым» все-таки удастся разгромить «Синих».

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

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

Входные данные: входные данные задачи записаны в файле victory.in.В первой строке этого файла записаны два числа: N — количество населенных пунктов (1 <= N <= 200) и K — количество дорог, соединяющих эти населенные пункты (0 <= K <= 1000).Дороги нигде не пересекаются. В следующих K строках файла содержится схема дорог.В каждой строке записано два натуральных числа i и j и одно положительное действительное число L ij, которое означает, что между населенными пунктами i и j существует дорога длиной L ij километров (Lij <1000).Далее описывается размещения боевых частей сторон, воюют. Следующая строка файла содержит число М1 — количество боевых частей «Оранжевых».В следующих М 1 строках записано по два числа: первое — целое число j — номер населенного пункта, в котором размещается военная часть; второе — действительное неотрицательное число Vj — скорость движения боевых колонн этой части в километрах в час (Vj <110).Далее в отдельной строке файла записано число М 2 — количество боевых группировок «Синих», по которым записаны м 2 чисел — номера населенных пунктов, где расположены эти группировки.В последней строке файла записано одно положительное действительное число Т, измеренное в часах <24).Все числа разделены пробелами.

Выходные данные: в первую строку файла victory.out выведите количество разгромленных группировок, а во второй — номера населенных пунктов (в порядке возрастания), в которых эти группировки базировались.

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

 

victory.in victory.out
8 июле 2
1 февраля 80 8 Апреля
2 25 апреля  
4 мая 10  
6 февраля 5  
3 февраля 40  
7 июня 10  

8 7 15

2

1 50

20 июня

4 4 5 8 Марта

2.0

 

 

 

 

 

Задача 15. «Метаморфозы»

(Заочная олимпиада, высшая лига, 2006-2007)

Учитель олимпийца Саши с первой задачи, обнаружив, что в его компьютера был осуществлен несанкционированный доступ, с перепугу написал докладную директору школы, а тот в свою очередь направил его докладную в Службу безопасности Украины. Данное дело о несанкционированном доступе к информационной системе была передана полковнику Иваненко с другой задачи. Он быстро собрал информацию по школе, и сделал вывод, что в школе существуют всего два человека, которые способны это сделать: сам учитель и олимпиец Саша (остальные не умеют включать компьютеры).

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

Входные данные:

В первой строке входного потока содержатся числа N и M — количество городов и количество дорог.

В каждом из следующих M строк содержится по 3 целых числа A, B, C — номера городов, которые соединяет дорога и время которое необходимо преодолеть при переезде из города А в город В (и наоборот). (1 <= C <= 100)

В последней строке содержится N целых чисел — время переезда через соответствующие города, все числа из этой строки лежат в пределах от 1..100.

Саша находится в городе номер 1, а Николай живет в городе номер N. (1 <N <= 200)

Исходные данные:

В выходной поток выведите число — минимальное время, за которое Саша может добраться до Николая (соответствующий путь есть всегда)

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

4 мая

1 февраля 2

1 3 3

2 апреля 2

3 февраля 3

4 марта 20

7 Январь 10 августа

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

20

 

 

Задача 16. «Tour De France» (Заочная олимпиада, 2008-2009) Имя входного файла:

tour.in

Имя выходного файла: tour.out

На этот раз Вам придется помочь организаторам всемирно известных велогонок Tour De France изготовить трассу, по которой будет проходить соревнования.  Организаторы гонки предоставили вам карту.  на ней

 

отмечено N пунктов и M одно- направленных дорог, которые соединяют эти пункты. Следует заметить, что транспортная система в Европе предусматривает, что между любой парой пунктов будет существовать как минимум одна дорога (о ее направленность не сообщается). Трасса должна начинаться с любого пункта и должна быть проложена через все N пунктов, а также следовать N-1 дорогами (которые соединяют соответствующие N пунктов).

Входные данные: в первой строке входного файла записаны два числа N (1 <= N <= 100) и M (1 <= M <= 10000). В следующих M строках записано по два числа ai и bi (1 <= ai, bi <= N), задающие дорогу, которая исходит из пункта ai и следует в пункт bi. Номера пунктов — натуральные числа, не превышающие N. Причем, могут существовать дороги, которые выходят и входят в один и тот же пункт, а также два пункта, могут быть соединены более чем одной дорогой. Однако, гарантируется, что для любых двух различных пунктов с номерами i и j существует дорога, которая выходит из пункта i и следует в пункт j, или же наоборот — выходит из пункта j и следует в пункт i.

Выходные данные: в случае существования такой трассы в единственной строке выходного файла должно быть записано N чисел — номера пунктов, по которым будет проходить трасса, в порядке ее следования, обособленных ровно одним пробелом. Если существует несколько вариантов прокладки трассы — выведите любую. Если вариантов прокладки трассы не существует, то в единственной строке выходного файла выведите строку «NO SOLUTION», без кавычек.

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

tour.in

4 июня

1 февраля

3 февраля

1 апреля

4 марта

2 апреля

1 марта

tour.out

1 4 2 3

 

 

Задача 17. «Прогулка по городу»

(Заочная олимпиада, 2009-2010) Имя входного файла: travel.in

Имя выходного файла: travel.out

Максимальное время работы на одном тесте: 800 ms

Максимальная оценка за задачу: 50 баллов

В Кракове, недалеко от берега Вислы стоит Дракон: каменный, с пузырчатой ​​телом, огромными лапами к небу поднятой головой. Город Краков — любимый город туристов, которые съезжаются сюда отовсюду. Петрик — один из них. Карта Кракова представляет собой таблицу, размером NxM, клеточками которой является кварталы, некоторые из которых доступны для движения, а некоторые нет. Также на карте отмечены интересные места, причем это также кварталы, по которым возможно движение. Вася выбрал маршрут для ознакомления с городом. Он начнет из клетки (1, 1), придется в клетку (N; M), а затем снова вернется туда откуда пришел (в клеточку (1, 1)). Конечно, Петрик хочет пересмотреть как можно больше различных интересных мест. Так как Петрик знает Краков очень плохо, и вообще заблудиться здесь очень нежелательно, он решил, что на пути в ячейку (N; M) будет всегда идти вправо, или вниз (относительно карты), а на обратном — влево или вверх. Помогите Пете найти максимальное количество различных интересных мест, в которых он может побывать.

Входные данные: в первой строке входного файла содержится два числа — N и M (1 <= N, M <= 100). В следующих N строках содержится описание карты

— строка из M букв, причем «#» означает квартал недоступен для движения, «*» —

место для просмотра, а «.» (точка) — квартал доступен для движения, служит Васи только клеточкой для движения. Гарантируется, что клетки (1, 1) и (N; M) не будут обозначены символом «#».

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

 

Задача 18. «Труба времени» (Заочная олимпиада, 2010-2011) Лимит времени: 1 с

Лимит памяти: 64 Мбт

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

Входные данные:

Первая строка содержит количество тестов k (k — не превышает 10).  Первая строка каждого теста содержит число звездных систем n (1 <= n <= 1000) и число труб времени m (1 <= m <= 2000). Звездные системы нумеруются числами от 0 до n — 1 (Солнечная система имеет номер 0). Следующие m строк содержат три числа x, y, t (-1000 <= t <= 1000). При перемещении из звездной системы x в систему в происходит благодаря перемещению во времени на t лет. Если t> 0, то перемещение происходит в будущем, если t <0 — то в прошлое.

Исходные данные:

Для каждого теста вывести сообщение «Yes» или «No» в зависимости от возможности или невозможности попасть в бесконечное прошлое.

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

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

0 января 1000

1 февраля 15

 

Yes No

1 февраля -42  
4 апреля  
0 10 январь  
1 февраля 20  
3 февраля 30  
3 0 -60  

 

 

 

Задача 19. «Слону походы» (Заочная олимпиада, 2010-2011) Лимит времени: 0.5 с

Лимит памяти: 64 Мбт

Василько любил играть в шахматы и часто придумывал для себя различные шахматные головоломки. Вот одна из них. Пусть есть шахматная доска размером NxN (1 <= N <= 10 ^ 9). Нужно найти сколько ходов нужно слону, чтобы из клетки (x1, y1) попасть в клетку (x2, y2).

Входные данные:

В первой строке стандартного входного потока находится натуральное T (1 <= T <= 100) — количество тестов. Каждый тест содержит 5 целых чисел: N, x1, y1, x2, y2 (1 <= x1, y1, x2, y2 <= N).

Исходные данные:

Для каждого теста вывести количество ходов слона или «no move» для случая, когда слон не может попасть из первой ячейки в другую.

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

Пример входных данных: Пример выходных данных:
3 1
8 3 6 3 июня no move
8 4 2 2 марта 2
1 июня 4 6 5  

 

 

 

Задача 20. «Кодекс»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт

В некоторой стране парламент решил принять информационный кодекс, которым очень сильно ограничивал использование интернета. Отныне проверяющий сможет когда угодно читать чужую электронную почту, на посещение сайтов необходимо 215зятиы разрешения, и кроме того пользователям становлении годовой лимит загруженной информации 1 Гб. Конечно, это очень возмутило пользователей интернета, и они вышли на митинг, митинговали долго и нудно, и поняли, что необходимо изменить тактику борьбы за свободу Интернета. В координационном штабе интернетчиков созрел план цифрового освобождения, предусматривающий хакерский взлом компьютеров парламента. Как известно компьютеры в парламенте этой страны объединены в специфическую сеть со следующими характеристиками:

1) Каждый компьютер соединен с определенной кол-вом других, и может передать им информацию;

2) Между любыми двумя компьютерами является только 1 путь передачи информации;

3) Получив доступ к компьютеру можно 215зятиы под контроль его и все компьютеры с которыми он непосредственно соединен.

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

Входные данные:

В первой строке число N — количество компьютеров в парламенте. Во второй строке число M — количество межкомпьютерным соединений. В каждом из следующих M строк содержится по 2 числа — номера компьютеров в соединении. (1 <N <= 10000)

Исходные данные:

Единственное число — минимальное количество компьютеров, которую необходимо взломать.

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

 

Пример входных данных: Пример выходных данных:
8 2
7  
1 февраля  
3 февраля  
4 марта  
4 мая  
6 февраля  
7 Апреля  
8 Апреля  

теория игр

 

Задача 1.

(ИIИ областная олимпиада, 1989 год)

В игру «Щелк» играют так: поле M \ N заполнено фишками. Два игрока поочередно снимают с поля фишки. Игрок в своем ходе должен выбрать любую неснятую фишку и снять ее вместе со всеми фишками, номер строки которых больше или равен номеру строки выбранной фишки, а номер столбца — больше или равно номеру столбца выбранной фишки.

Проигрывает тот, кто снимет с поля фишку, что стоит в левом нижнем углу (т.е. в клетке [1,1]). У кого из игроков есть выигрышная стратегия при M = 2 ?. Разработать программу, играющий за этого игрока.

 

Задача 2.

(ИIИ областная олимпиада, 1989 год)

Игра «Баше» (в игре участвуют двое). Соперники ходят по очереди и за каждый ход любой из играющих может взять не более M предметов. Проигрывает тот, кто вынужден взять последний предмет. Составить программу, играющий за игрока с выигрышной стратегией.

 

Задача 3.

(IV областная олимпиада, 1990 год)

Два человека играют в такую ​​игру: есть поле M / N (M и N — нечетные), на которое игроки по очереди ставят по одному шахматного короля. Короля можно ставить на любую клетку, которая не занята и не находится под боем какого-либо короля, поставленного ранее любым из игроков. Игрок, который не сможет сделать очередной ход, считается проигравшим.

Написать программу, которая выступает за игрока, имеющего выигрышную стратегию.

Задача 4. «Морской бой»

(VII областная олимпиада, 1993 год)

Составить программу «Морской бой». Игра проходит между двумя участниками, один из которых ЭВМ, на поле 10 х 10 клеток. Каждый из участников расставляет на поле по 10 одноклиткових катеров (катера не могут касаться друг друга). При попадании в катер при очередном ходе он считается уничтоженным. Побеждает тот, кто уничтожит первым катера соперника. Если участник во время очередного хода уничтожил катер соперника, то он ходит еще раз. ЭВМ размещает катера случайным образом, ее партнер водит координаты катеров с клавиатуры.

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

 

Задача 5. «Жадный треугольник»

(XX областная олимпиада, 2006 год)

Жюри заочной олимпиады бросило вызов команде олимпийцев в игре «Жадный треугольник».

Правила игры следующие:

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

Конечно, жюри очень профессиональное, поэтому попробуйте написать программу, которая поможет вам в нелегкой борьбе.

Входные данные: (файл tr.dat)

В первой строке записано число N (1 <= N <= 30). В следующих N строках записаны числа, составляющие «жадный треугольник». Каждое из этих чисел больше 0 и не превышает 50.

Выходные данные: (файл tr.sol)

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

пример tr.dat пример tr.sol
4 9
1 февраля 3 Июля  
4 мая 3  
7 Февраля  
1  

 

 

 

Задача 6. «Игра с обменами»

(XXII областная олимпиада, 2008 год)

Саша и Олег играют в увлекательную игру. Саша выписал подряд числа от 1 до N. А Олег выписал P пар чисел (Ai, Bi).

Теперь Саша превращает полученную последовательность чисел — он меняет местами числа в этой последовательности. Если некоторая пара чисел (Ai, Bi) выписана Олегом, то Саша имеет право в любой момент взять числа с последовательности, которые стоят на местах Ai и Bi и поменять их местами.

Например, пусть N = 5. Тогда сначала Сашей выписана последовательность 1 2 3 4 Май

Пусть Олег написал две пары чисел: (1,2) и (2,5). Тогда Саша в любой момент может менять числа, стоящие на 1 и 2 местах, или же числа, которые стоят на 2 и 5 местах.

Например, он может последовательно получить такие последовательности: 2 1 3 4 5 (поменял числа на 1 и 2 местах)

2 5 3 4 1 (поменял числа на 2 и 5 местах)

2 Мая 3 4 1 (поменял числа на 1 и 2 местах).

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

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

Напишите программу, которая поможет Олегу справиться с этой задачей.

Входные данные

Сначала записано число N (1≤N≤100) — количество чисел в последовательности. Далее идет N чисел — последовательность, которую получил Саша (в последовательности каждое из чисел от 1 до N встречается ровно один раз).

Далее идет число P (0≤P≤10000) — количество пар чисел, выписал Олег.

Далее записано P пар чисел (каждое число пары — из диапазона от 1 до N).

Выходные данные

В первую строку выходного файла выведите сообщение YES (если такая последовательность могла быть честно получена Сашей) и NO (если такую ​​последовательность Саша не мог получить, не нарушая правил игры).

В случае, когда такая последовательность могла быть получена, далее выведите способ ее получения (если вариантов несколько, выведите любой из них). Сначала выведите число K — количество операций обмена (оно не должно превышать 100000), а в последующие K строк — K пар чисел, задающих номера мест, на которых стоят элементы, обмениваются (числа в паре могут быть выданы в любом порядке ).Гарантируется, что если решение существует, то существует решение с числом обменов, не превышающий 100000.

 

Задача 7. Волк и овцы

(Заочная олимпиада, 2001-2002)

Для этой игры используется шахматная доска, одна черная ( «Волк») и четыре белых ( «Овцы») шашки. В начале игры «Волк» занимает клетку C1, а «Овцы» B8, D8, F8 и H8.  Все ходы разрешены только на одну клетку по

 

диагонали, причем «Волк» может двигаться как вперед, так и назад (4 направления), а «Овцы» только вперед (2 направления). «Овцы» и «Волк» ходят поочередно. Первый ход делают «Овцы». За один ход движется только одна «Овца». Проигрывает тот, кто не сможет сделать свой ход. (Или «Овцы» дойдут противоположного края доски, или «Овцы» окружит «Волка»).

Напишите программу, которая будет играть против «Волка». Для участников, пишущих на Borland Pascal:

Вашей программе при компиляции будет предоставлено модуль GAME.TPU, в котором будут реализованы

такие функции и процедуры: PROCEDURE InitGame;

PROCEDURE MakeMove (S1, S2: string); FUNCTION GetMove: string; PROCEDURE EndGame;

InitGame должна быть вызвана в начале программы.

Для того, чтобы сообщить «Вовку» свой ход программа должна вызывать MakeMove, где S1 и S2

начальное и конечное положения «Овцы», что делает ход.

Для того, чтобы узнать ход «Волка» программа должна вызвать функцию GetMove, которая вернет

новое положение «Волка».

Когда наступит положение, где одна из сторон не сможет сделать свой ход нужно вызвать

EndGame.

Ваша программа может иметь примерно следующую структуру: USES Game;

…. BEGIN

InitGame;

….

repeat

….

MakeMove (S1, S2)

….

S = GetMove;

….

until … EndGame; END.

Для участников, пишут на C ++:

Вашей программе при компиляции будет предоставлено файл GAME.H, в котором будут реализованы следующие функции:

void InitGame ();

void MakeMove (char * S1, char * S2) char * GetMove ();

void EndGame ();

Назначение этих функций тоже самое, что и Pascal аналогов. Ваша программа может иметь примерно следующую структуру: include <game.h>

….

int main ()

{

InitGame ();

….

while (…)

{

….

MakeMove (S1, S2)

….

S = GetMove ();

….

}

EndGame (); return 0;

}

Примечание.

Каждое положение «Волка» или «Овцы» кодируется строкой из двух символов: Первое большое латинская буква (A ..H), обозначающий строку, вторая цифра (1..8), обозначающий столбик. Так что при первом ходе «Овца» стоящий на поле B8 может сделать ход или на A7, или на C7.

Программа будет тестироваться двумя или тремя «Волками», каждый из которых будет иметь свой уровень сложности.

 

Задача 8.

(Заочная олимпиада, 2002-2003)

В городе безвыигрышную раз в неделю организуют такую ​​интеллектуальную лотерею программистов:

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

2) случайным образом выбираются и приглашаются в студию претендентов на главный приз;

3) с каждым претендентом отдельно проводят розыгрыш описан в пунктах

4) и 5) и 6);

4) в лототрон закладывают 1000) пронумерованных шаров с номерами от 1 до 1000;

5) робот GIRL достает 1000 раз случайном образом шара с барабана, а программа претендента на выигрыш угадывает номер каждой шара;

6) пока программа претендента не назовет правильно номер шара, следующая пуля не вынимается из лототрона.

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

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

Программистам, пишущих на языке Pascal будет предоставлено модуль GIRL.TPU,

в котором будет реализована такая функция: FUNCTION Zapyt (Number: Integer): Integer

Программистам, пишущих на языке С ++ будет предоставлена ​​библиотека GIRL. H, в которой будет реализована такая функция: int zapyt (int Number)

функция возвращает 1, если число в запросе больше номера шара.Функция возвращает -1, если число в запросе меньше номера шара. функция возвращает 0, если число в запросе равен номера шара.

Приведенный ниже пример правильный, но не дает выигрышного результата:

USES GIRL;

VAR i, j: Integer; BEGIN

 

 

 

 

END.

For i: = 1 to 1000 do For j = 1 to 1000 do

If Zapyt (j) = 0 Then Break;

 

 

Задача 9. «Новый Год не придет»

(Заочная олимпиада, 2002-2003)

Путешествуя в город Olympijsk из страны вечных снегов, Дед Мороз остановился в одном из отелей небольшого городка. В местном ресторане он познакомился с ICE’om — выдающимся игроком в «Льдинки», который предложил сыграть Деду Морозу на его подарки.

В случае проигрыша Деда Мороза, он проигрывает свою волшебную сумку с подарками, без которой праздник Нового Года не будет. Зная, что Дед Мороз не умеет играть в «Льдинки» ICE предложил ему решить, будет он ходить первым или вторым.

Игра происходит на поле размера NxN. В первой строке расположены льдинки ICEьа, в N-ом льдинки Деда Мороза. На каждом ходе игрок выбирает свою льдинку и перемещает ее вперед на любое количество свободных ячеек. Проигрывает игрок, не сможет сделать ход.

(3 <= N <= 1000)

пример:

Начальная позиция при поле 5×5

xxxxx

…..

…..

…..

ooooo

Возможный ход ICEьа

xx.xx

…..

..x ..

…..

ooooo

Возможный ответ Деда Мороза

xx.xx

…..

..x ..

..o ..

oo.oo

Возможный ход ICEьа

x..xx

…..

..x ..

.xo .. oo.oo

Напишите программу, которая будет беспроигрышно играть за Деда Мороза. Указания для решений на языке Pascal

При компиляции вашей программе будет предоставлено модуль GAME.TPU В этом модуле будет реализовано такие функции и процедуры: FUNCTION InitGame: integer;

PROCEDURE BeginGame (K: integer); PROCEDURE MakeDidMorozMove (C, P: integer); PROCEDURE GetIceMove (var C, P: integer); PROCEDURE EndGame;

В начале игры вызовите функцию InitGame, которая вернет значение N. Далее ваша программа должна вызвать процедуру BeginGame (K)

где K = 1, если первый ход будет делать ICE,

K = 2, если первый ход будет делать Дед Мороз.

Далее, при ходе Деда Мороза нужно вызвать процедуру MakeDidMorozMove (C, P), где C — номер столбца в котором делается ход, P — количество ячеек, на которую переместилась льдинка.

При ходе ICEьа нужно вызвать процедуру GetIceMove (C, P).

Значение C и P такие же, как и в процедуре MakeDidMorozMove (C, P)

В конце игры (когда ни один из игроков не сможет сделать ход) необходимо вызвать процедуру EndGame.

Ваша программа может выглядеть следующим образом:

USES Game;

… BEGIN

N = InitGame;

BeginGame (K)

while … begin

if flag then MakeDidMorozMove (C, P) else GetIceMove (C, P)

end; EndGame; END.

Указания для решений на языке C ++

При компиляции вашей программе будет предоставлено файл GAME.H В этом модуле будет реализовано следующие функции:

int InitGame ();

void BeginGame (int K)

void MakeDidMorozMove (int C, int P) void GetIceMove (int & C, int & P)

void EndGame ();

 

 

Содержание этих функций соответствующий аналогичным функциям и процедурам с модуля GAME.TPU для розьязкив на языке Pascal.

Возможен вид вашей программы:

#include <game.h>

int main ()

{

N = InitGame ();

BeginGame (K)

while …

{

if (flag) MakeDidMorozMove (C, P) else GetIceMove (C, P)

}

EndGame (); return 0;

}

 

 

Задача 10. «В Таврию за волей …»

(Заочная олимпиада, 2003-2004)

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

Испугался хан сабель казачьих, но и пленниц отдавать не хотел. Прислал он письмо атаману кошевому: «Зачем нам кровь проливать, вот как выиграешь ты у меня в крестики-нолики отдам девушек ваших без боя». И стал кошевой думу думать, как хана-бусурмана обыграть, и изобрели казаки путь к выигрышу, а вы найдете?

Крестики-нолики играют на поле размером 3х3. Все 9 ячеек в начале игры пустые. Первый ход имеет игрок, который ставит крестики. Игроки по очереди ставят в пустые ячейки свои знаки (первый — крестики, Друть — нолики). игра заканчивается когда:

А) на определенной горизонтали, вертикали или диагонали есть три одинаковых знаки.

Кто смог выставить свои знаки соответствующим образом 3 в ряд, тот и выиграл.

Б) Если пункт «А» не осуществился, и не осталось свободных ячеек.

Результат в данном случае — ничья.

Ваша программа должна:

В начале вызвать функцию BeginGame, которая вернет значение 0 или

1. 0 — вы играете ноликами, 1 — крестиками.

Для того, чтобы сделать свой ход, вызвать процедуру MakeMove (r, c) где параметры r и с — номер строки и колонки в который вы делаете ход.

Для того, чтобы узнать ход соперника вызвать процедуру TakeMove (r, c), которая вернет в переменные r и с номер строки и колонки в который делает ход соперник.

Если игра заканчивается — вызвать процедуру EndGame (res). В параметр res — передать 0 — если вы проиграли, первый случае ничьей, 2 — если вы выиграли. Программа будет проверяться на нескольких модулях, разного уровня сложности.

Все вышеприведенные процедуры находятся в модуле zeros.tpu для языка Pascal (не используйте других модулей! CRT, DOS и т.д.) и в файле zeros.h для языка C ++.

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

USES zeros;

… .. BEGIN

… K = BeginGame;

… MakeMove (r, c)

… TakeMove (r, c)

EndGame (res) END.

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

#include «zeros.h»

int main ()

{

k = BeginGame ();

… MakeMove (r, c)

… TakeMove (r, c)

… EndGame (res) return 0;

}

 

 

Вам предоставляются образцы модулей (но играют они не лучшим образом)

{Zeros.pas} UNIT zeros; INTERFACE

FUNCTION BeginGame: integer; PROCEDURE EndGame (res: integer); PROCEDURE MakeMove (r, c: integer); PROCEDURE TakeMove (var r, c: integer); IMPLEMENTATION

VAR F: Array [1..3,1..3] of integer; FUNCTION BeginGame: integer; var r, c: integer;

begin

 

for r = 1 to 3 do

for c = 1 to 3 do F [r, c] = 0; randomize; BeginGame = random (2) end;

PROCEDURE MakeMove (r, c: integer); begin

F [r, c] = 1;

end;

PROCEDURE TakeMove (var r, c: integer); var rr, cc: integer;

begin

for rr = 1 to 3 do for cc = 1 to 3 do

if F [rr, cc] = 0 then begin F [rr, cc]: = 1; r = rr; c = cc; Exit end; end;

PROCEDURE EndGame (res: integer); begin

end; BEGIN END.

//zeros.h

#include <stdlib.h> int BeginGame ();

void EndGame (int res) void MakeMove (int r, int c)

void TakeMove (int & r, int & c); int _F [3] [3];

int BeginGame ()

{

int r, c; for (r = 0; r <3; r ++)

for (c = 0 c <3, c ++) _F [r] [c] = 0; randomize ();

return random (2)

}

void EndGame (int res)

{

}

void MakeMove (int r, int c)

{

_F [r-1] [c-1] = 1;

}

void TakeMove (int & r, int & c)

{

for (r = 0; r <3; r ++) for (c = 0 c <3, c ++) if (_F [r] [c] == 0)

{

_F [r] [c] = 1; r ++; c ++;

return;

}

}

 

 

Задача 11. «Игра на конфеты»

(Заочная олимпиада, высшая лига, 2005-2006)

Двое детей играют в интересную игру на доске размера M x N. (2≤ M ≤50, 2≤ N ≤50).В каждой клетке доски находится от 1 до 100 конфет. Только левая верхняя ячейка, имеет координаты (1,1) — пустая.

Игра начинается с этой клетки.

Дети ходят по очереди. За один ход разрешается переместиться на любое количество ячеек вправо или вниз и забрать себе все конфеты, которые находятся в ячейке, на которую произошло перемещение; дальше игра продолжается с цией клетки. Игра заканчивается, когда кто-то достанется ячейки с координатами (M, N).

Побеждает тот, кто соберет больше конфет.

Игровое поле представлено в файле game.dat: в первой строке числа M и N; в следующих M строках по N чисел — количество конфет в соответствующей ячейке.

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

Указания к решению на языке Pascal.

При компиляции вашей программе будет предоставлено модуль GAME.TPU. В этом модуле будет реализовано следующие процедуры:

PROCEDURE BeginGame (P: integer); PROCEDURE MakeMove (R, C: integer); PROCEDURE GetMove (var R, C: integer); PROCEDURE EndGame;

Ваша программа должна.

В начале игры вызвать процедуру BeginGame (p), где p = 1, если вы хотите ходить первыми, р = 2 — вторыми.

Для того, чтобы сделать свой ход, вызвать процедуру MakeMove (R, C), где параметры R и C — номер строки и колонки, в который вы делаете ход.

Для того, чтобы узнать ход соперника вызвать процедуру GetMove (R, C), которая вернет в переменные R и C номер строки и колонки, в который делает ход соперник.

Если игра закончилась — вызвать процедуру EndGame.

Ваша программа может выглядеть следующим образом:

USES Game;

… BEGIN

BeginGame (K)

while … begin

if … then MakeMove (R, C) else GetMove (R, C)

end;

EndGame; END.

Указания к решению на языке C ++

При компиляции вашей программе будет предоставлено файл GAME.H

В этом модуле будет реализовано следующие функции: void BeginGame (int P)

void MakeMove (int R, int C) void GetMove (int & R, int & C) void EndGame ();

Содержание этих функций соответствует аналогичным процедурам с модуля GAME.TPU для розьязкив на языке Pascal.

Ваша программа может выглядеть следующим образом:

#include <game.h>

void main ()

{

BeginGame (K)

while …

{

if … MakeMove (R, C) else GetMove (R, C)

}

EndGame ();

}

Пример. game.dat 3 марта

0 5 6

5 6 1

1 3 2

В данном случае целесообразно играть за первого игрока и делать первый ход в клетку (1,3).

 

Задача 12. «Интересная игра»

(Заочная олимпиада, высшая лига, 2006-2007)

Пусть имеется некоторое число N. За одну операцию каждому игроку разрешается делить данное число нацело (обычное деление с удалением дробной части результата) на любое число, не менее 2 и не более M. Проигрывает тот, кто получит в результате 0.Игроки ходят по очереди. Найдите кто выигрывает, при оптимальной игре каждого из игроков.

Технические требования:

Входной файл: GAME.IN

Выходной файл: GAME.OUT

Ограничение времени: 1 секунда

Входные данные: в первой строке входного файла GAME.IN содержится единственное число К (1 ≤ K ≤ 10000) — количество тестовых блоков в файле.В каждом следующем строке содержится один тестовый блок, состоящий из двух целых чисел N и M, 2 ≤ N ≤ 1000000000 и 2≤ M ≤ N.

Выходные данные: в файл GAME.OUT для каждого из тестовых блоков в отдельной строке выведите 1, если при данных N и M выигрывает первый игрок, и 2 — если второй.

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

 

GAME.IN GAME.OUT
2

5 марта

10 апреля

1

2

 

 

 

Задача 13. «Налоговый инспектор»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт

Частный предприниматель и налоговый инспектор играют в следующую игру: Есть матрица NxN в которую записаны целые числа P (0 <= P <= 1000000) — доходы предпринимателя за определенные периоды. Далее каждый игрок по очереди вычеркивает последнюю строчку, или последний столбик матрицы, при условии, что сумма чисел в этой строке / колонке парная. Участник, который не сможет сделать ход (все уже вычеркнут, или сумма в последней строке и последнем столбце нечетная) проигрывает игру. Напишите программу, которая определит кто выигрывает игру, при самой оптимальной игре обоих игроков.

Входные данные:

Первое число — T (T <= 10) — количество описаний игр. Далее следует T блоков. Каждый блок описывает соответствующую игру. Первое число блока — N — размер матрицы. (0 <N <= 1000), далее содержится N * N чисел — матрица игры.

Исходные данные:

В выходной поток запишите T чисел, по одному на каждую строчку. 1 — если выиграет первый игрок, и 0 — если первый игрок проигрывает.

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

 

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

3

9 июля 4

1

0

1 3 3  
9 апреля 1  
3  
5 5 0 1 июля  
1  
2  
5 февраля  

теория чисел

 

Задача 1.

(I областная олимпиада, 1987)

Заданы три натуральных числа A, B и N. Составить алгоритм нахождения натуральных чисел, не превышающих N, которые можно представить в виде суммы (произвольного числа) слагаемых, каждое из которых будет А или В. Если натуральное число М меньше N можно представить различными способами, то его учитывать один раз.

 

Задача 2.

(I областная олимпиада, 1987)

Задано натуральное число N. Написать алгоритм, который проверяет данное число четным или нечетным.

 

Задача 3.

(I областная олимпиада, 1987)

Данная целочисленная таблица А [1: 100]. Написать алгоритм, который подсчитывает количество таких элементов, для которых все предыдущие элементы меньше А [i].

 

Задача 4.

(I областная олимпиада, 1987)

Написать программу с помощью которой можно найти количество натуральных чисел, меньших натурального числа N, куб каждого из которых можно представить в виде суммы квадратов трех натуральных чисел (например, М = I + J + L). Натуральное число, удовлетворяет несколько способов предствалення его куба, учитывать только один раз

Задача 5.

(I и областная олимпиада, 1988 год)

Написать алгоритм, который подсчитывает количество всех простых чисел, не превышающих данного числа М.

 

Задача 6.

(I и областная олимпиада, 1988 год)

Написать алгоритм определения количества натуральных чисел, не превышающих М и удовлетворяют равенство I — J = (K + L).

 

Задача 7.

(I и областная олимпиада, 1988 год)

Среди целых чисел n, n + 1, …, 2n найти все такие, которые можно представить как сумму квадратов двух целых чисел.

 

Задача 8.

(I и областная олимпиада, 1988 год)

Среди целых чисел n, n + 1, …, 2n, найти все простые числа, разница между которыми равно двум.

 

Задача 9.

(I и областная олимпиада, 1988 год)

Написать программу вывода всех совершенных чисел от M до N, где M <N. Натуральное число называется совершенным, если оно равно сумме своих делителей, кроме самого себя (например, 6 = 1 + 2 + 3).

 

Задача 10.

(I и областная олимпиада, 1988 год)

Найти наименьшее целое число А, которое для различных целых чисел k, l, m, n удовлетворяет условию: А делится на k, A 1 делится на l, A 2 делится на m, A 3 делится на n.

Задача 11.

(I и областная олимпиада, 1988 год)

Дано уравнение вида m + (m + 1) + (m + 2) + … + (m + k) = a. Составить программу, которая проверяет, существует ли для данных натуральных k и a такое натуральное m, чтобы k и m были решением уравнения. С помощью программы найти все решения уравнения при a = 1000.

 

Задача 12.

(I и областная олимпиада, 1988 год)

Среди целых чисел n, n + 1, …, 2n найти такие, которые можно представить как сумму квадратов двух целых чисел. Решить задачу при n = 5, n = 10.

 

Задача 13.

(ИIИ областная олимпиада, 1989 год)

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

 

Задача 14.

(IV областная олимпиада, 1990 год)

Разработать алгоритм, позволяющий раскладывать любое натуральное число K (K 2) на простые множители.

Результат решения разрешается представить одним из двух способов:

1) таблицей множителей;

2) каждый полученный множитель выводить командой ПЕЧАТЬ (имя переменной)

 

 

Задача 15. «Количество совершенных»

(V областная олимпиада, 1991 год)

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

 

Задача 16. «Простые множители»

(VII областная олимпиада, 1993 год)

Построить алгоритм разложения натурального числа на простые множители.

 

Задача 17. «Число Армстронга»

(VII областная олимпиада, 1993 год)

Число Армстронга — такое число с k цифр, для которого сумма k х степеней его цифр равна самому числу.

Например: 153 = 1 3 + 5 3 + 3 3

Найти все числа Армстронга из двух, трех и четырех цифр.

 

 

Задача 18. «Быки и коровы»

(VII областная олимпиада, 1993 год)

Составить программу игры «Быки и коровы». ЭВМ придумывает четырехзначное число, в котором все цифры разные. Игрок должен отгадать это число, делая несколько попыток (вводя числа в ЭВМ). После введения очередного номера ЭВМ делает анализ и сообщает о степени совпадения введенного числа с начальным, то есть число «быков» и «коров». «Корова» — это цифра в числе игрока, совпала по разряду с такой же цифрой в видгадуваному числе.

«Бык» — цифра в числе игрока, не совпадает по разряду с такой же цифрой в видгадуваному числе. Если, например, заданное число 6482, то число 5428 содержит 1 «корову» (цифру 4) и 2 «быки» (цифры 8 и 2).

 

Задача 19. «Совершенное число»

(VII областная олимпиада, 1993 год)

Натуральное число называется совершенным, если оно равно сумме всех своих делителей, кроме его самого (например, 6 = 1 + 2 + 3 — совершенное число). Запишите алгоритм, проверяет, является ли данное число совершенным.

Задача 20. «Системы счисления»

(VII областная олимпиада, 1993 год)

Запишите алгоритм перевода числа m с основанием системы счисления г.

в число с основанием системы счисления q.

 

 

Задача 21. «Множество»

(X и областная олимпиада, 1997 год)

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

1. в относится Мх;

не существует числа у 1, принадлежащей Мх i для которого выполняется соотношение

х <y1 <y.

Будем называть число z непосредственно предыдущим для х, если:

1. z принадлежит Мх;

не существует числа z1, принадлежащей Мх i для которого выполняется соотношение

z <z1 <x.

Замечания.              числа рассматриваются в десятичные системе счисления.

Нулями слева от первой ненулевой цифры пренебрегаем.

Дано: натуральное х.

Получить: у, является непосредственно следующим для х, z, что является непосредственно предыдущим для х.

 

Задача 22. «НCК»

(XИИИ областная олимпиада, в 1999 год)

Заданные два натуральных числа А и В (1 <= A <= B <= 10000). Нужно вычислить наименьшее общее кратное (НОК) всех натуральных чисел от А к

В включительно, то есть найти минимальное натуральное число, которое делится на А, а + 1, …, В.

 

Задача 23. «И снова Фибоначчи»

(XVII областная олимпиада, 2003 год)

Первое и второе числа Фибоначчи равны 1. Каждое следующее — это сумма двух предыдущих. Итак, начало ряда Фибоначчи выглядит следующим образом:

1 1 2 3 5 8 13 21 34 55 89 144 …

Необходимо построить алгоритм и реализовать его в виде программы FIB.PAS (BAS или CPP), что находить наибольший общий делитель N-го и M-го чисел Фибоначчи (1 <= N, M <= 1000).

В файле FIB.DAT записано только два числа N и M.

В файл FIB.SOL нужно вывести искомый общий делитель. примеры:

FIB.DAT 18 декабря

7 октября

20 октября

 

 

FIB.SOL 8

1

55

 

 

Задача 24. «Наименьшее число»

(XIX областная олимпиада, 2005 год)

Записать наименьшее число, сумма цифр которого равна заданному числу N (0 <N <100000). Входные данные: из стандартного входного потока вводится единственное число N.

Выходные данные: вывести в стандартный выходной поток наименьшее число, сумма цифр которого равна N.

Пример 1: Входной поток 6

выходной поток

6

Пример 2: Входной поток 10

выходной поток

19

 

 

Задача 25.

(Заочная олимпиада, 2000-2001)

Подсчитайте количество последних нулей в факториале числа N.

Входные данные:

число N (0 <= N <= 2000000000)

Исходные данные:

количество последних нулей. Пример входных данных: 8

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

1

 

 

Задача 26. системы счисления

(Заочная олимпиада, 2001-2002)

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

Входные данные: в файле INPUT.DAT находится последовательность латинских букв (не более 255 символов), что может быть записью числа в римской системе исчисления.

Выходные данные: в файл OUTPUT.DAT вывести последовательность знаков 0 и 1, которые записью данного числа в двоичной системе счисления или запись not correct record, если входная информация некорректна.

Пример 1. Пример 2.
INPUT.DAT INPUT.DAT
XXIV XXИIV
OUTPUT.DAT OUTPUT.DAT
11000 not correct record

 

 

 

Задача 27 «Симпатичные простушки»

(Заочная олимпиада, 2002-2003)

Назовем «симпатичными» числа в записи которых содержатся только нечетные цифры. Простым называется число, которое имеет только два делителя: 1 и само число. Напишите программу, которая печатает все простые «симпатичные» числа из заданного интервала [M; N].

Технические условия.

В единственной строке входного файла NICE.DAT содержатся два числа M i N разделены пробелом.

1 <M, N <MaxLongint.

В выходной файл NICE.SOL записать найдены числа. Каждое следующее число в новой строке.

 

Задача 28. «Меньше всего»

(Заочная олимпиада, 2002-2003)

Даны N натуральных чисел, каждое из которых не превышает 1000000000. 1 <= N <= 10000. Найдите наименьшее натуральное число, которое нельзя получить в виде суммы любого из данных чисел.

Входные данные:

Входной поток в первой ленте содержит число N.

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

Исходные данные:

В первую ленту выходного потока следует вывести одно число, требуется в условии задачи.

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

входящие данные Выходные данные

5 Июля

3 8 1 11 2

 

 

Задача 29. «Супер простушки»

(Заочная олимпиада, 2003-2004)

Возьмем натуральное число S. Если оно простое (имеет два делителя: 1 и само число), то ищем сумму цифр этого числа. Если полученная сумма является простым числом, то снова находим сумму цифр уже этого числа и т.д. Если этот процесс не останавливается, то такое число S назовем «супер простым».

Например, «супер» простым является число 47, потому что 47 -> 11 -> 2 -> 2 …

Среди введенного набора натуральных чисел с интервала [N, M] найти «супер» простые числа.

Технические условия:

Файл-решение не должен превышать по размерам 3 Кб.

Входные данные находятся в файле «SIMPLE.DAT», в единственной строке которого записано два числа N и M (1 <N, M <= 2000000), разделенных пробелом.

Результат вывести в файл «SIMPLE.SOL», в каждой строке которого записано «супер» простое число.

Пример 1:

SIMPLE.DAT SIMPLE.SOL 10 февраля 2

3

5

7

Пример 2:

SIMPLE.DAT SIMPLE.SOL 2990 3120 2999

3011

 

 

Задача 30. «В паре просто»

(Заочная олимпиада, 2003-2004)

Даны числа: 1, 2, 3, … N (N <= 1000000). Написать программу, распределит данные числа на

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

простым числом. Входные данные: число N.

Выходные данные: в каждом ряду по два числа разделенных пробелами. пример входящих данных Пример выходных данных 7 6 Января

7 Апреля

5 февраля

 

 

Задача 31. «Гигантомания»

(Заочная олимпиада, 2003-2004)

Разложите на простые множители число n! (N-факториал), 2 <= n <= 100000.

Примечание: факториалом числа n есть число, равное произведению всех целых чисел от 1 до n включительно. Например 5!= 1 * 2 * 3 * 4 * 5.

Входные данные:

Входной поток содержит в первой ленте единственное число — значение n.

Исходные данные:

Выведите в одну ленту исходного потока степени простых множителей в виде = <множитель> ^ <степень> * <множитель> ^ <степень> * … Множители в исходном потоке должны следовать в порядке возрастания.

пример:

Входной поток: 10

Выходной поток = 2 ^ 8 * 3 ^ 4 * 5 ^ 2 * 7 ^ 1

Примечание:

разрешенное время на прохождение теста для задачи 3 — 5 сек.

 

 

Задача 32. «Суперчисла»

(Заочная олимпиада, первая лига, 2005-2006)

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

Помогите украинской команде «Maski.ua» выиграть этот конкурс.

Входные данные: В текстовом файле supernum.dat находится только одно число N. (0 <N <10 ^ 60000).

Выходные данные В текстовый файл supernum.sol вывести одно число, полученное при перестановке цифр числа N.

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

Пример 1.

supernum.dat supernum.sol

2015 5012

 

Пример 2.

supernum.dat supernum.sol

56556 66555

 

Время на тест 1с

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

 

Задача 33. «Весы»

(Заочная олимпиада, высшая лига, 2005-2006)

Есть весы и набор гирь массой 1, 3, 9, 27, …, 3 ^ (n-1) кг, причем каждая гиря в единственном экземпляре.На левый рычаг весов кладется предмет массой m кг (0≤ m ≤3 ^ (n-1)).Нужно распределить гири на весах так, чтобы был достигнут баланс. Не требуется использовать все гири.

Входные данные: в первой строке файла Weight.in — числа m и

n (n ≤20) (цели неотъемлемые), разделенные символом «пробел».

Выходные данные: в первой строке файла Weight.out — число m и массы гирь на левом рычаге в порядке возрастания.Во второй строке — массы гирь на правом рычаге весов в порядке роста.

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

 

Weight.in Weight.out
5 марта 1 мая 3

9

 

 

 

Задача 34. «Делимость»

(Заочная олимпиада, первая лига, 2005-2006)

Одна царская особа, познакомившись с двоичной системой и получив интеллектуальную наслаждение от таблички умножения в этой системе (такое бывает), решила проверить признаки делимости. Первая мысль: «С какого числа начать проверку». Поскольку царство праздновал 31-летие лица, то придворный математик посоветовал начать именно с этого числа (наш совет была бы другой, не так ли?). Но … праздник есть праздник.

Задано двоичное число. Проверить его делимость на 31.

Входные данные: В единственной строке текстового файла bin. in записано двоичное число.

Выходные данные В стандартный выходной поток вывести «yes» в случае, если данное число делится на 31, или «no» в противном случае.

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

 

пример 1 пример 2
bin.in bin.in
1011101 111110111
yes no

 

 

 

Задача 35. «Цифры»

(Заочная олимпиада, высшая лига, 2006-2007)

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

Постройте три числа:

1) меньше, которое можно построить из этих цифр;

2) больше, которое можно построить из этих цифр;

3) число, ближайшее к среднему арифметическому двух первых полученных чисел, которое можно построить из этих цифр.

В десяти строках текстового файла CIPHRY.IN находятся числовые значения количества цифр соответственно для 0, 1, …, 8, 9.количестве не

превышают 100.

В файл CIPHRY.OUT в трех строках выведите три числа соответственно: меньше, больше, одно из ближайших к среднему арифметическому наименьшего и наибольшего.

Пример файла CIPHRY.IN:

2

2

1

 

Пример файла CIPHRY.OUT:

112

21100

10210

 

 

Задача 36. «Полиндромы»

(Заочная олимпиада, первая лига, 2006-2007)

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

Входные данные. в первой строке файла number.dat записано единственное натуральное число, количество цифр которого не превышает 1000.

Исходные данные. в первую строку файла number.sol выведите искомый полиндром.

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

number.dat

1711

number.sol

1771

Задача 37. «Автоморфные числа»

(Заочная олимпиада, первая лига, 2006-2007)

Составьте программу нахождения всех автоморфных чисел на отрезке [m, n].Автоморфные называется число, равное последним цифрам своего квадрата. Например: 5 * 5 = 25, 6 * 6 = 36, 25 * 25 = 625.

В файле Z3.dat содержатся числа m и n (1 <= m, n <= 40000), разделенные одним или несколькими пробелами.

В файл Z3.sol запишите через пробел все автоморфные числа, принадлежащих указанном отрезке.

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

Z3.dat

3 50

Z3.sol

6 мая 25

 

 

Задача 38. «Последовательность 01»

(Заочная олимпиада, высшая лига, 2006-2007)

Определить сколько существует последовательностей из 0 и 1 длиной n, в которой не встречается двух единиц подряд. n <45.

Входные данные. В первой ленте входного потока содержится единственное число n. Исходные данные. В первую ленту исходного потока вывести единственное число — количество последовательностей длины n, в которых не встречается двух единиц

подряд.

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

5

Пример выходных данных, соответствующих входным:

13

Задача 39. «Кролики»

(Заочная олимпиада, первая лига, 2006-2007)

Есть пара кроликов. Пара начинает ежемесячно рожать новую пару на третий месяц жизни. Одна пара кроликов живет k месяцев.Сколько кроликов будет через n месяцев?

Технические условия.В стандартном входном потоке содержится два целых числа k и n (3 <= k <= n <= 30).В стандартный выходной поток вывести единственное целое число — количество кроликов через n месяцев.

входные данные

6 июня

Исходные данные

14

 

 

Задача 40. «Множить или не множить»

(Заочная олимпиада, высшая лига, 2006-2007)

Исследуйте, существуют числа в системе счисления с основанием M такие, заканчивающиеся цифрой N, больше N и обладают следующим свойством: результат произведения числа на цифру N можно получить отрезав последнюю цифру и дополнив ее в начале.

Технические ограничения:

М — натуральное число от 2 до 36 включительно; N — одно из следующих

0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z.

Выходные данные: N и M в первой строке текстового файла INPUT.TXT

Выходные данные: в первую строку файла SOLUTION.DAT записать наименьшее из существующих натуральных чисел или NO, если числа не существуют.

Пример 1 файла INPUT.TXT: 10 Апреля

Пример 1 файла SOLUTION.DAT: 102564

Пример 2 файла INPUT.TXT:

0 8

Пример 2 файла SOLUTION.DAT:

NO

 

 

Задача 41. «Ключ-1»

(Заочная олимпиада, первая лига, 2006-2007)

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

Входные данные: в текстовом файле Z1.dat содержится число N

(0 <= N <= 2147483647)

Выходные данные: в текстовый файл Z1.sol записать искомое целое число или 0, если такого числа нет.

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

Z1.dat Z1.sol
10

2)

 

Z1.dat Z1.sol
5 5

3)

 

Z1.dat Z1.sol

21 37

4)

 

Z1.dat Z1.sol
11

 

 

Задача 42. «Лучший кролик»

(Заочная олимпиада, первая лига, 2006-2007)

Как известно, фермеры Диетенко и Вампиров постоянно конкурировали друг с другом. Каждый хотел доказать другому, что его кролики лучше. Но, в связи с тем, что оба имели незаурядные способности к математике, просто искать крупнейшего кролика им было неинтересно. Поэтому лучшим считался тот кролик, вес которого выражалась простым числом и при этом сумма цифр этого числа была как можно больше. Для проверки фермеры выбрали по N своих кроликов. Помогите фермерам Диетенку и Вампирову решить этот спор и выбрать лучшего кролика.

Входные данные: в первой строке текстового файла Z3.dat содержится число N — количество кроликов, которых представил каждый фермер (значение N не превышает 1000).Далее следуют 2 * N строк, в каждой из которых записана масса одного кролика.Для удобства фермеры записывали массу кролика в граммах. Поэтому все числа — натуральные. Причем в первых N строках записаны данные о кроликах фермера Вампирова, а в следующих N строках — кролики фермера Диетенка.

Выходные данные: в первую строку текстового файла Z3.sol запишите букву V, если победил фермер Вампиров, или букву D, если победил фермер Диетенко.В вторую строчку запишите массу кролика-перможця.

Если у одного кролика масса не будет выражаться простым числом, или массы кроликов-победителей у фермеров совпадают, в файл Z3.sol запишите единственную строку, содержащую словo «draw».

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

1)

 

Z3.dat Z3.sol
4 V
1123 9551
9551  
2252  
951  
5921  
1129  
1893  
2854  

2)

 

Z3.dat Z3.sol
2 draw
2682  
1986  
8910  
1000  

 

 

Задача 43. «Числа-палиндромы»

(Заочная олимпиада, 2008-2009)

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

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

Выходные данные: в первую строку стандартного выходного потока вывести искомое количество чисел-палиндромов.

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

Стандартный входной поток:

12

321

1

212

222

213

Стандартный выходной поток:

3

 

 

Задача 44.

(Заочная олимпиада, 2008-2009)

Известно, что число Смита — это такое составное число, сумма цифр которого равна сумме цифр всех его простых сомножителей. Так, примером числа Смита может служить 202, поскольку 2 + 0 + 2 = 4, и 2 + 1 + 0 + 1 = 4 (202 = 2 * 101).

Найдите количество чисел Смита на промежутке [N, M], где 0 <N, M <= 30000.

Формат входных данных. Во входном файле input.txt содержат числа N i M разделены пробелом.

Выходные данные. В выходной файл output.txt вывести количество чисел Смита.

 

Задача 45.

(Заочная олимпиада, 2008-2009)

Сыграем в такую ​​игру. Вам дается натуральное число N. Вы находите сумму квадратов его цифр и получаете новое число. Затем с этим числом проделываем те же операции. Какое число вы получите после K таких шагов?

Формат входных данных. Во входном файле input.txt содержатся натуральные числа N i K, не превышающих 10 ^ 9.

Выходные данные. В выходной файл output.txt вывести искомое число.

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

input.txt

123 3

output.txt

50

 

 

Задача 46. «Факториалы»

(Заочная олимпиада, 2009-2010)

Факториал числа N (обозначается N!              ) Определяется следующей рекуррентной формуле:

При N = 0, N! = 1

При N> 0, N! = (N-1)! * N

Необходимо определить наименьшее число факториал которого заканчивается ровно на K нулей.

Входные данные:

Во входном файле factorial.in дано целое число K, (0 <= K <= 500000000) Выходные данные:

В выходной файл factorial.out вывести наименьшее число, факториал которого закинчуетсья ровно на K нулей.

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

2

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

10

 

 

Задача 47. «Интересные числа» (Заочная олимпиада, 2009-2010) Имя входного файла: interest.in

Имя выходного файла: interest.out

Максимальное время работы на одном тесте: 300 ms

Максимальный объем используемой памяти: 64 мегабайта

Максимальная оценка за задачу: 20 баллов

Существуют натуральные числа, заканчивающиеся цифрой N, такие, что перенос цифры N на начало числа приводит к увеличению числа в N раз.

Например, число 102564, N = 4, 410256 = 102564 * 4.

формат входящих данных: в единственной строке входного файла задано натуральное число N (2 <= N <= 9).

Выходные данные: единственную строку выходного файла должна содержать одно число — наименьшее натуральное число, удовлетворяющее данное условие.

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

interest.in

4

interest.out

102564

 

 

Задача 48. «Странные числа» (Заочная олимпиада, 2009-2010) Имя входного файла: strange.in

Имя выходного файла: strange.out

Максимальное время работы на одном тесте:

600 ms

Максимальная оценка за задачу: 30 баллов

Вася называет число странным, если количество его делителей нечетная, например число 4 — странное, оно имеет 3 делители: 1,2,4. Задано список чисел, Вася хочет найти количество странных цифр в нем. Так как Вася не умеет программировать, то эту задачу было поручено Вам.

Входные данные: в первой строке входного файла задан размер списка — натуральное число N (1 <= N <= 100). В следующих N строках записаны натуральные числа без ведущих нулей, не превышающие 10 ^ 20.

Выходные данные: единственную строку выходного файла должна содержать одно число — количество странных цифр в заданном списке.

 

Задача 49. «Eight 2 Sixteen»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт

В файле eight.dat записано дробное число в системе счисления с основой

8. Файл может содержать до 10 ^ 6 знаков.

В sixteen.sol выведите это же число в системе счисления с основанием 16.

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

 

Пример входных данных: Пример выходных данных:
76543210.0101 FAC688.041

 

физика

 

Задача 1.

(I и областная олимпиада, 1988 год)

Круг состоит из двух сопротивлений R 1 и R 2.Эти опоры соединены последовательно, если n = 1 и параллельно, если n = 2. Определить общее сопротивление цепи. Решить задачу для R 1 = 15 Ом и R 2 = 21 Ом и n = 1, n = 2.

 

Задача 2. «Драгстер»

(Заочная олимпиада, 2010-2011)

Лимит времени: 1 с

Лимит памяти: 64 Мбт

Драгстер называют сверхмощные гоночные машины, которые соревнуются на дистанции 402 м. Драгстеры всю дистанцию движутся с ускорением (будем считать его постоянным) и пересекают финишную прямую со скоростями 250-500 км / час.

В первой строке файла dragster.in записано число N — количество драгстер, в следующих N строках через пробел названия драгстер и показатели их ускорения.

Вычислите скорость в км / ч каждого драгстера с точностью до третьего знака после десятичной точки и выведите название самого быстрого. Результаты выведите в отдельных строках файла dragster.out. Гарантируется, что победитель будет единственный.

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

 

Пример входных данных: Пример выходных данных:
3 456.505
«Flash» 20.000002 457.872
«Mega turtle» 20.12 468.001
«NoBreaks» 21.02 «NoBreaks»

Разное

 

Задача 1.

(ИIИ областная олимпиада, 1989 год)

Детям нужно определить ведущего в некоторой игре. Для этого они, став в круг и определив первого, начинают считать с помощью «считалки», содержащий M слов. Тот, на ком заканчивается «считалка», выходит из круга. После этого «считалка» повторяется, причем с первого участника. Если после очередного круга «считалки» первый участник выбыл, то счет начинается со следующего за ним участника. Составить алгоритм, позволяющий определить порядковый умер того из N игроков (N <M), который выбывает последним.

 

Задача 2.

(IV областная олимпиада, 1990 год)

Когда-то очень давно в шахматном королевстве всем Фигуры ходили так, как заблагорассудится. Но потом Королю надоели эти «беспорядки» и он издал Указ, по которому каждой Фигура предписывалось ходить определенным образом. Чтобы этот Указ строго выполнялся, Король приказал каждый ход всех Фигур записывать (что сейчас и делают шахматисты), чтобы можно было выявить нарушителя и за неповиновение снять с Доски.

Как то раз Король приказал проверить запись ходов коня и доложить, правильно Лошадь выбрал свой маршрут. Но никто в шахматном королевстве проверить ходы коня не смог — ведь одной из Фигур (по Королевскому Указу) не разрешалось ходить так, как Лошади.

Можете ли Вы, зная запись ходов коня (в виде списка координат некоторых N полей шахматной доски размером 8 \ 8), разработать алгоритм, позволяющий определять, является ли этот запись разрешенным маршрутом для лошади?

Задача 3. «Обмен значениями»

(V областная олимпиада, 1991 год)

Переменным X и Y присвоены соответственно значения а и b.Составьте алгоритм, после выполнения которого переменная Х примет значение b, а переменная Y примет значение а.При этом нельзя использовать дополнительную переменную.

 

Задача 4. «Новая история одного города»

(VIII областная олимпиада, 1994 год)

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

ЗАДАЧИ: написать программу, для заданной последовательности координат автомобиля вычисляет штраф водителя.

 

Задача 5. «Эдемский сад»

(ИX областная олимпиада, 1995 год)

Эдемский сад состоит из N фруктовых деревьев, размещение которых с ад а лишь к в о р д и нат а мы (X i, Y i), а и х Евро жа и н о сти, о т п о е д н о, к ре в н юю во U i, i = 1,2, …, N. Садовник огородил сад забором минимальной длины.Разработать программу, которая выводит на экран план Эдемского сада, на котором иллюстрируется взаимное расположение ограждения и деревьев. при этом:

1. Обеспечить возможность ввода начальных данных как с клавиатуры, так и из файла EDEM.GOD, и отображать их на дисплее в виде плана

Эдемского сада (учесть, что первая запись файла EDEM.GOD содержит значение N, а в каждой из следующих N записей помещаются по три числа — X i, Y i и U i, д е 1iN, N2 0; ч ис л а в к о ж ном с апы с и р а з д ил Энни п р оп в ска м и.

2. Обеспечить возможность диалога редактирования исходных данных с синхронным отображением результатов редактирования на плане Эдемского сада.

3. Вычислять и выводить на дисплей урожайность всего сада.

4. Вычислять и выводить на дисплей максимальное расстояние между деревьями сада.

5. Вычислять и выводить на дисплей минимальное расстояние между соседними деревьями сада.

6. Определять количество рогов в кратчайшие ограждения.

7. Вычислять и выводить на дисплей периметр ограждения сада.

8. Вычислять и выводить на дисплей площадь огороженного сада.

9. Автоматически наносить на план сада кратчайший маршрут, следуя которому, можно обойти все деревья и вернуться к месту старта, вычислять расстояние по этому маршруту.

10. Динамично отображать на плане обход Эдемского сада садовником вдоль найденного кратчайшего маршрута.

 

Задача 5.

(X областная олимпиада, 1996 год)

Даны две календарные даты. Определить, какие это дни недели, и вычислить количество дней между этими датами. Не забудьте, что високосным считается год, номер которого кратен четырем и не кратен 100, либо кратен 400. Например, между 21.01.1996 и 22.01.1996 — 1 день, между 01.02.1996 и 01.03.1996 —

29 дней, между 01.03.1995 и 01.02.1995-28 дней.

Данные читать с клавиатуры в формате «ДД.ММ.ГГГГ», где ДД — день, MM — месяц, ГГГГ — год. Проверяйте правильность введенной информации.

Задача 6. «Кодирование»

(XVII областная олимпиада, 2003 год)

Хакер Вася шифрует свои сообщения друзьям следующим образом. Для каждого байта файла он меняет местами биты с номерами 0-1, 2-3, 4-5, 6-7. Так байт, значение которого 87, превратится в байт со значением 171. В файле CODE.DAT записано закодированное таким образом сообщения. (Размер файла CODE.DAT не более 1024 байт). В файл CODE.SOL необходимо записать расшифровку сообщения. Ваша программа должна иметь название CODE.PAS (BAS или CPP).

Пример: CODE.DAT ABCDEFGH CODE.SOL ВБГИКЙЛД

Примечание: CODE.SOL это файл с 8 байт, имеющие значение: +130129131136 +138137139132

 

Задача 7. «Японский календарь»

(XVII областная олимпиада, 2003 год)

В старояпонском календаре был принят 60-летний цикл, состоящий из 12-летних подциклов. Подциклы обозначались названиями цветов: зеленый, красный, желтый, белый, черный. Внутри каждого подцикла года имели названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. 1984 год — в год зеленого крысы — был годом начала очередного цикла. Напишите программу CALENDAR.PAS (BAS или CPP), что обеспечит введение некоторого года из файла CALENDAR.DAT и вывода его названия по древнеяпонские календарю в файл CALENDAR.SOL

CALENDAR.DAT 2003

CALENDAR.SOL

Год черной овцы

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

CALENDAR.SOL букв кириллицы допускается запись латинскими буквами. Например, вместо фразы «Год можно записать» Rik zelenogo pacyuka «.

Украинские слов зеленого крысы »

 

Зачачи 8. «Tap_Lap

(XX областная олимпиада, 2006 год)

Строительная фирма «тяп-ляп» принимает заказы на отделку стен внутренних помещений (выравнивание, штукатурка, покраска и т.п.). для

расчета стоимости работ необходимо знать площадь стен.  вам необходимо

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

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

Входные данные:

В первой строке входного потока содержится два действительных числа D, L. Во второй строке — два целых числа N, M (длина и ширина помещения, заданная в количестве клеток, 1 <= N, M <= 100).  В следующих N строках содержатся по M

чисел, каждое из которых равно 0 (клетка не принадлежит стене) или 1 (клетка

принадлежит стене). Все числа разделяются между собой пробелом.

Исходные данные:

В выходной поток необходимо вывести одно число — исчисленную площадь стен, с точностью до двух знаков после запятой.

Например (для схемы, приведенной в условии):

 

Input Output
1             3 312.00
12             14  
0 0 1 1 1 1 1 1 1 1 1 1 1 1  
1 0 0 0 1 0 0 1  
1 0 1 0 1 0 0 1  
1 0 0 0 1 0 0 1 1 1  
1 0 0 0 0 0 0 1  
1 0 0 0 0 1 0 1 1 1  
1 0 0 0 0 1 0 1 1  
1 0 1 0 0 1 0 1 1 1 1 1 1  
1 0 1 1 1 1 0 1 1  
1 0 1 0 0 1 0 1  
1 0 1 0 0 1 0 1 1  
1 1 1 1 1 1 1 1 1 1 1 1 0 0                

 

 

 

Задача 9. «Банк»

(XX областная олимпиада, 2006 год)

Дедушка решил положить в банк определенную сумму денег под k% годовых с таким завещанием: «Каждые 50 лет снимать всю прибыль и тратить его на обновление материально-технической базы школы, которую я закончил».

Затем он решил подсчитать сумму, накопится после каждого года при условии, что сумма вклада 1000 грн. и k = 5%. Три дня с утра до вечера сидел дедушка по подсчетам, много раз ошибался, начинал вычисления сначала, использовал много бумаги, однако окончательно так и не подсчитал. Тогда он обратился к своему внуку, который увлекался программированием, участвовал в заочных олимпиадах и турнирах, успешно выступал в школьных и районных олимпиадах и даже получил право защищать свой район на областной олимпиаде по информатике. Представьте, что вы тем внуком или внучкой и помогите дедушке справиться с этой задачей.

Формат входных данных.

В первой строке стандартного входного потока записано натуральное число S — сумма денег, которую дедушка положил в банк (1000≤ S ≤10000000).Во второй строке записано число k (0 <k <1) — процентная ставка.

Выходные данные.

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

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

 

пример 1 пример 2
Входные данные 1000

0.05

Входные данные 5000

0.10

Выходные данные 10467.40 Выходные данные 581954.26

 

 

 

Задача 10. «Нумерация координатной сетки»

(XXII областная олимпиада, 2008 год)

Узлы координатной сетки пронумерованы по спирали, как показано на рисунке. Необходимо по координате узла определить его номер.

Входные данные.

Ваша программа должна вводить с клавиатуры два ц бедствий числа X и Y, которые разделены пробелом, — координаты узлов по оси X и Y, соответственно (-20000 <X

<20000, -20000 <Y <20000).

Исходные данные.

Ваша программа

должна вывести на экран номер

узла, координаты

которого равны (X, Y).

Пример.

введение Вывод

2 февраля 13

 

 

Задача 11. дорожки

(Заочная олимпиада, 2001-2002)

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

Размеры площади — 10 на 10 клеток. Карта дорожек задается следующим образом:

В первой ленте входного потока содержится 21 символ — 11 точек разделенных ровно одним пробелом. Во второй ленте содержатся символы ‘|’, представляющие собой вертикальные сегменты дорожек. Эти символы размещены напротив некоторых точек первой ленты, и представляют собой сегмент дорожки, соединяющей точку первой ленты с соответствующей точкой следующей ленты. Все остальные символы второй ленты — пробелы. Третья лента снова состоит из 21 символа — 11 точек разделенных одним пробелом или знаком «_» (подчеркивание), представляющий собой горизонтальный сегмент дорожки, соединяющий соответствующие точки этой ленты. И т.д. Всего 21 лента во входном потоке. Первая и последняя ленты не могут содержать горизонтальных сегментов дорожек. Первый и последний столбик не может содержать вертикальных сегментов дорожек (символ ‘|’ не может быть первым и двадцать первый в ленте). Иными словами дорожка никогда не проходит вдоль края площади. Каждый человек зашла на площадь на одну из крайних точек, переходила от одной точки к другой, непосредственно соединены сегментами дорожек, а не

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

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

Пример. Вход:

. . . . . . . . . . .

|

. . . ._._._. . . . .

| |

. . . . . . . . . . .

| |

._._._. . . . . . . .

| |

. . . ._._._._._._._.

|

. . . . . . . . . . .

|

. . . . . . . . . . .

|

. . . ._._._._. . . .

| |

. . . . . . . . . . .

| |

. . . . . . . . . . .

| |

. . . . . . . . . . .

Выход: 25

 

Задача 12.

(Заочная олимпиада, 2001-2002)

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

С этой лаборатории в новый корпус передали образец № К, но лаборант забыл из которого контейнера была вынута соединение. Напишите программу для робота, с помощью которой можно определить номер пустого контейнера.

известно:

□ контейнеры есть все: от 1 до N (N <1000), — но стоят они без

порядке;

□ в контейнерах хранились образцы с номерами от 1 к М (М <

30000), где М> N;

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

Программистам, пишущих на языке Pascal будет предоставлено модуль ROBOT.TPU, в котором будет реализована такая функция: FUNCTION GetZrazokNumber (NumberOfKonteqner: Integer): Integer

Программистам, пишущих на языке С ++ будет предоставлена ​​библиотека ROBOT. H, в которой будет реализована такая функция: int GetZrazokNumber (int NumberOfKonteqner)

Функция возвращает номер образца, который хранится в контейнере с номером NumberOfKonteqner. Если возвращен номер равен 0, тогда пустой контейнер найдено.

Данные K и N вводятся с клавиатуры в одной строке. Номер пустого контейнера необходимо вывести на экран.

ВНИМАНИЕ! Вызвать функцию можно определенную ограниченное количество раз.

Поэтому приведенный ниже пример правильный, но не дает лучшего результата:

USES ROBOT;

VAR i, K, N : Integer; BEGIN

Readln (K, N)

For i: = 1 to N do If GetZrazokNumber (i) = 0 Then Break; Writeln (i)

END.

В данной программе оценивается не только время выполнения программы, а и количество обращений к функции GetZrazokNumber. Максимальный балл получит участник, количество попыток которого наименьшая. Другие пропорционально: (баллы за тест)

* (Минимальное количество) / (количество участника).

 

 

Задача 13.

(Заочная олимпиада, 2003-2004)

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

Демонстрация провалилась — Забувайко забыл одно единственное число.

Вам предоставляется протокол демонстрации: последовательность из М натуральных чисел.

Известно, что все числа кроме одного встречаются ровно 2 раза. Выясните, какое число не держится в памяти господина Забувайко.

Входные данные: в первой строке число М, в последующих — М натуральных чисел.

Выходные данные: соответствующее число.

Технические ограничения: M и N не превышают 2000000000.

пример входящих данных Пример выходных данных: сентябрь 3000

1001

5

3000

50

20000

50

20000

1001

5

 

 

Задача 14. «Змей»

(Заочная олимпиада, высшая лига, 2005-2006)

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

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

Входные данные: в единственной строке входного файла содержится число N (0≤ N ≤4000) — количество пунктов лабиринта, по которым он построен.Каждые два соседних пункты соединены прямой, параллельной осям координат. В следующих N строках содержатся по два числа x и y — координаты пунктов лабиринта в порядке обхода, которые по абсолютной величине не превышают 10000.

Выходные данные: в единственную строку выходного файла выведите единственное число — длину змея с точностью до четырех знаков после запятой.

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

 

snake.in snake.out
5 4.0000
0 1  
1 марта  
3 февраля  
2 февраля  
2 0  

 

 

 

Задача 15. «Центральная точка»

(Заочная олимпиада, высшая лига, 2006-2007)

На плоскости находится n точек с целыми координатами (x i, y i) i = 1..n; n <= 1000; -10000 <= x i, y i <= 10000.Назовем центральной точкой одну из заданных точек с координатами (x c, y c), такую, что для любой другой заданной точки (x i, y i) существует точка (x j, y j), такая, что x c — x i = x j — x c и y c — y i = y j — y c (т.е. точки (x i, y i) и (x j, y j) являются симметричными относительно точки (x c, y c)) .

Задача. Определить, существует ли среди заданных точек центральная точка.

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

Исходные данные. В первую ленту исходного потока вывести координаты центральной точки, разделив их одним или более пробелами. Или вывести один знак «-«, если в заданных точек не существует центральной точки.

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

6

0 4

6 февраля

1 марта

2 февраля

6 февраля

0 0

Пример выходных данных, соответствующих входным:

1 марта

 

 

Задача 16. «Переключатели»

(Заочная олимпиада, высшая лига, 2006-2007)

Взрывное устройство, было заложено неизвестным террористом, имеет N — лампочек, и M — переключателей. Каждый переключатель меняет состояние некоторых лампочек на противоположное. Для обезвреживания бомбы, необходимо выключить все лампочки.

Напишите программу, которая спасет мир.

Входные данные (файл BOMBA.DAT):

В первой строке число N. (0 <N <= 100).

Во второй строке содержится N чисел, обозначающих состояние каждой лампочки (0 — выключена, 1 — включена).

В третьей строке содержится число M. (0 <M <= 100).

В каждом из следующих M строк содержится число K (количество лампочек, состояние которых меняет данный переключатель) и K чисел — номера соответствующих лампочек.

Исходные данные (файл BOMBA.SOL):

Если бомбу обезвредить невозможно, запишите в выходной файл «NO» (без кавычек).

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

5 YES
0 1 1 0 1 1 марта
4  
3 2 3 4  
3 1 4 5  
2 5 апреля  
2 4 февраля  

 

 

 

Задача 17. «Кролики-2»

(Заочная олимпиада, первая лига, 2006-2007)

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

Земляне вернулись на планету через n месяцев.Сколько кроликов они насчитали?

Технические условия.В стандартном входном потоке содержится два целых числа n и k (0 <= n <= 20 1 <= k <= 1000), в стандартный выходной поток вывести единственное целое число — количество кроликов через n месяцев.

входные данные

10 Мая

Исходные данные

12

Объяснение.К концу первого месяца кроликов стало 2, второго — 4 … на начало 5 месяца их было 16 и монстр съел 10. Итак, кроликов осталось 6 и на конец этого месяца прибавилось еще 6. Есть 12 в 5 месяцев.

 

Задача 18. «Миллион зайцев»

(Заочная олимпиада, высшая лига, 2006-2007)

На совершенно ровном поле в координатах (0, 0) находится охотник.Поле перегорожено N заборами.Забор начинается в точке (x pi; y pi), i = 1 ..N, и продолжается на w pi метров параллельно оси X, в направлении роста координаты x.Заборы являются высокими и непрозрачными, так что охотник не может видеть, что находится за забором. На поле за заборами скрывается R зайцев с координатами (x rj, y rj), j = 1 ..R. Сколько зайцев видит охотник?

В противоречивом случае, когда x rj / y rj = x pi / y pi или x rj / y rj = (x pi + w pi)

/ Y pi, считать зайца не видно, потому что он хорошо спрятался.

Исходные данные:

В первой строке входного потока содержится число N, 1 <= N <= 10000.В следующих N строках содержится по три целых числа, разделенных пробелами: x pi, y pi, w pi. -10000 <= x pi <= 10000, 0 <y pi <= 10000, w pi> 0, -10000 <= x pi + w pi <= 10000.В следующей строке содержится число R, 1 <= R <= 10000.В следующих R строках содержится по два целых числа x rj, y rj. -10000 <= x rj <= 10000, 0 < y rj <= 10000.

результат:

В выходной поток вывести одно число — сколько зайцев видит охотник.

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

Данные, соответствующие изображению приведенном выше:

5

8 февраля 2

-5 7 Марта

-2 5 апреля

-4 3 февраля

2 4 февраля

7

0 6

5 мая

-5 4

-6 3

3 1

3 февраля

5 марта

Пример результата:

Результат, соответствует данным приведенным выше 2

Задача 19. «Дешифратор»

(Заочная олимпиада, высшая лига, 2006-2007)

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

Саша с первой попытки подобрал пароль к учительскому компьютеру (им оказалось слово «password») и скопировал из него коды доступа к контрольным работам. Но как стало известно, что из этих кодов только два являются верными. Их можно получить друг из друга циклической перестановкой букв (когда некоторые буквы поочередно переносятся с конца строки в начало, например: «abcdef» и «efabcd»). Вам необходимо определить эти два ключа.

Входные данные В первой строке входного потока число N (3 <= N <= 10).В каждой из следующих N строк содержится код, длина которого ненулевая и не превышает 10000.

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

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

3

efabcd kukuku abcdef

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

efabcd abcdef

Задача 20. «Перчатки»

(Заочная олимпиада, 2008-2009)

На швейной фабрике изготавливают перчатки двух размеров: для взрослых и для детей. Над этим работают 4 цеха: в первом шьют левые перчатки для взрослых, во втором — правые, в третьем — левые перчатки для детей, а в четвертом — правые для детей. Готовая продукция по конвейеру попадает в большого ящика. По окончании рабочего дня робот сортировщик анализирует содержимое ящика и записывает результаты в текстовый файл. Обнаружив большую левую перчатку, он пишет для файла строку с единственной буквой L, большую правую — с буквой R, маленькую левую — с буквой l (малая английская L), маленькую правую — с буквой r.

Нужно усовершенствовать аналитический модуль работа, написав программу для определения, сколько всего пар перчаток сшита.

Входные данные: в каждом из строк текстового файла z2.txt записана одна из букв (L, R, l или r).

Выходные данные: в единственную строку текстового файла z2.sol вывести целое число — общее количество пар рукавиц обоих размеров.

 

Задача 21. «Спекулянт»

(Заочная олимпиада, 2008-2009)

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

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

Рассмотрим валютного спекулянта на имя Баксик, который пытается заработать на экономическом кризисе.

В его стране есть N городов, в которых действуют обменные пункты валют.

Баксик аналитически просчитал которые должны быть курсы валют в этих городах D дней вперед.

 

Он также информацию о ценах проезда по каждой из дорог между городами (между каждыми 2 городами есть дорога).

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

В начале экономического кризиса, баксик имеет UAH гривен, и USD долларов.За день он может переехать в любой другой город и осуществить там обмен валют, или остаться в городе и осуществить обмен валют, или остаться в городе и

не совершать обмена валют.

Вам необходимо посчитать сколько максимально денег в гривнах может собрать Баксик через D дней.

Входные данные:

В первой строке стандартного входного потока записаны числа N, D, UAH, USD. (1 <= D <= 100), (1 <= N <= 100), (0 <= UAH <= 10000), (0 <= USD <= 10000)

Следующие N строк содержат по N чисел и описывают цены проезда по соответствующим дорогам. (Число в i-й строке и j-м столбце показывает цену переезда по прямой дороге из города i в город j)

Каждый из последующих N строк содержит по D пар действительных чисел — курсы валют для соответствующих городов на все дни кризиса. Первое число каждой пары показывает за сколько гривен купят за 1 доллар, второе число из пары показывает — за сколько гривен продадут 1 доллар. Второе число в паре всегда не менее от первого.

Баксик в начале кризиса находится в городе с номером 1.

Исходные данные:

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

В каждом из следующих D строк запишите информацию о деятельности Баксика за каждый день в следующем формате:

первое число строки содержит номер города в которое переместился (или в котором остался) Баксик.

второе число показывает количество дорог — R — которую он проехал для этого перехода.

Следующие R цифр показывают номера мес через которые он проезжал (в порядке проезда, не отмечая первого города).

Последние два числа показывают сколько гривен и долларов он продал в этом городе.

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

3 1100100

0 1 марта

3 0 1

1 1 0

5.00 6.00

7.00 8.00

5.00 6.00

Пример выходных данных (внимание, пример может быть не оптимальным !!!):

798.00

2 2 3 2 0 100

Оценка: ваша программа принесет вам тем больше баллов, чем больше денег соберет ваш Баксик 🙂 по сравнению с другими …

Примечание: Обмен всегда осуществляется только до копеек (центов).  То есть если 1 доллар продается по 3 гривны, то Баксик имея 100 гривен может приобрести только 33.33 доллара, заплатив при этом 99.99 гривен, а одну копейку уже разменять НЕ можем.

 

Задача 22. «Опять шифровка»

(Заочная олимпиада, 2008-2009)

Известный метод шифрования квадратом: некоторое сообщение вписывается в квадрат по строкам. При этом пробелы заменяются знаком ‘*’, а если в последней строке квадрата остались свободные ячейки, они заполняются точками ( «.»). После этого, прочитав содержание квадрата столбец за столбцом, получают зашифрованный текст.

Ваша задача состоит в том, чтобы зашифровать входящее сообщение.

Входные данные:

В файле Z1.dat содержится сообщение, длиной не более 5000 символов. При считывании символы перевода строки необходимо игнорировать.

Выходные данные: В файл Z1.sol вывести зашифрованное сообщение.

пример:

Z1.dat:

Attack at dawn or we are done for Промежуточное представление в виде квадрата: A ttack

* at * dawn * or * we * ar e

* done * for. . .

 

Задача 23.

(Заочная олимпиада, 2009-2010)

Заочная олимпиада по информатике в Хмельницкой области проходит уже

10 лет. Надеемся, что она будет готовить «информатиков» еще гугол лет.

Пусть известно число N — количество дней до определенной заочной олимпиады по информатике в далеком будущем. В какой день недели состоится эта олимпиада, если сегодня четверг (15.10.2009).

Входные данные: в одной строке — натуральное число N — количество дней. (N <= 365 * 10 ^ 100).

Выходные данные: слово маленькими латинскими буквами — день недели.

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

365

Исходные данные:

friday                                   Список дней недели на английском: monday — понедельник

tuesday — вторник wednesday — среда thursday — четверг friday — пятница saturday — суббота sunday — воскресенье

 

Задача 24. «Cubes»

(Заочная олимпиада, 2009-2010)

В детском саду Вовочка любил составлять с кубиков башни. Кубики у него были такие, что каждая грань имела свой оригинальный цвет. Вовочка положил кубик на кубик так, чтобы каждая грань его построенной башни была одного цвета. Понятно, что каждый раз он мог составить башню различной высоты в зависимости от того, какие цвета для граней он выбирал. Интересно, — подумал Вовочка, — а какую же самую башню можно составить из этих кубиков? Задача оказалась не очень простой. Попробуйте составить программу, которая определит максимальную высоту башни, построенной по описанным правилам, если ребро кубика равно 1.

Формат входных данных. Первая строка входного файла cubes.in содержит натуральное число N (1 <N <= 1000) — количество кубиков в наборе Вовочки. Дальше в следующих N строках описаны цвета граней каждого кубика с помощью шести больших букв латинского алфавита, обозначающие соответствующий цвет (A — Azure Blue, B — Blue, C — Cyan, G — Green, O — Orange, R

— Red, S — Sun Yellow, V — Violet, W — White, Y — Yellow). Грани кубика идут в следующем порядке: передняя, ​​правая, левая, задняя, ​​верхняя, нижняя.

Выходные данные. В выходной файл cubes.out вывести наибольшую высоту башни, может быть построена по описанным правилам из кубиков Вовочки.

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

cubes.in

4

GYVABW AOCGYV CABVGO OVYWGA

cubes.out

3

 

 

Задача 25. «Командная игра» (Заочная олимпиада, 2010-2011) Лимит времени: 1 с

Лимит памяти: 64 Мбт

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

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

Входные данные:

Во входном файле z3.dat заданы: в первой строке — количество учащихся N (1 <= N <= 100), в следующих N строках — описание цветов карт, у одноклассников. Все цвета пронумерованы номерами от 1 до 50. Для каждого ученика записано: сначала число Mi (0 <= Mi <= 50), определяющий количество карт, имеет и-и ученик, а затем перечисляют номера цветов карточек. Сам Петрик имеет номер 1.

Исходные данные:

В выходной файл z3.sol вывести одно число — количество учеников в команде Петрика.

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

 

Пример входных данных: Пример выходных данных:
6  
2 марта 7 ноября  
2 1 мая  
5 февраля 8 4
3 июля 10 Мая  
 
19 февраля 25  

 

 

[Всего голосов: 4    Средний: 5/5]

Читать  Процедуры и функции Object Pascal