ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Информатика
>>
Книги, журналы
>>
Беров В., Лапунов А., Матюхин В., Пономарев А., Особенности национальных задач по информатике
главы:
|
|||||||||||||||||
Версия для печати
Убрать все задачи Уважаемые господа! Сегодня вам предлагается для каждого из следующих типов комбинаторных объектов: 1) перестановки N-элементного множества (лексикографический порядок); 2) K-элементные подмножества N-элементного множества (лексикографический порядок); 3) разбиения N-элементного множества на K непустых подмножеств (лексикографический, т.е. алфавитный, порядок); 4) разбиения числа N на слагаемые; 5) правильные скобочные последовательности из 2N скобок; 6) двоичные деревья с N вершинами; 7) цепочки из нулей и единиц длины N без двух единиц подряд; 8) перестановки N-элементного множества (порядок, в котором соседние перестановки отличаются транспозицией соседних элементов); 9) K-элементные подмножества N-элементного множества (порядок, в котором соседние подмножества отличаются двумя элементами); 10) все подмножества N-элементного множества (порядок, в котором соседние подмножества отличаются добавлением или удалением одного элемента); 11) подвешенные деревья с N вершинами; решить следующие две подзадачи: найти общее количество объектов и породить M объектов, начиная с L-го; по заданным объектам получить их номера. В качестве N-элементного множества везде подразумевается множество {1, ..., N}. Там, где порядок порождения комбинаторных объектов не указан, Вы можете выбрать его по своему усмотрению. Нумерация объектов начинается с нуля. Таким образом, Вам предстоит написать 11 программ. Задача
засчитывается, если Ваша программа прошла все тесты, в противном случае
|
Страница: << 8 9 10 11 12 13 14 [Всего задач: 67]
1) перестановки N-элементного множества (лексикографический порядок); 2) K-элементные подмножества N-элементного множества (лексикографический порядок); 3) разбиения N-элементного множества на K непустых подмножеств (лексикографический, т.е. алфавитный, порядок); 4) разбиения числа N на слагаемые; 5) правильные скобочные последовательности из 2N скобок; 6) двоичные деревья с N вершинами; 7) цепочки из нулей и единиц длины N без двух единиц подряд; 8) перестановки N-элементного множества (порядок, в котором соседние перестановки отличаются транспозицией соседних элементов); 9) K-элементные подмножества N-элементного множества (порядок, в котором соседние подмножества отличаются двумя элементами); 10) все подмножества N-элементного множества (порядок, в котором соседние подмножества отличаются добавлением или удалением одного элемента); 11) подвешенные деревья с N вершинами; решить следующие две подзадачи: найти общее количество объектов и породить M объектов, начиная с L-го; по заданным объектам получить их номера. В качестве N-элементного множества везде подразумевается множество {1, ..., N}. Там, где порядок порождения комбинаторных объектов не указан, Вы можете выбрать его по своему усмотрению. Нумерация объектов начинается с нуля. Таким образом, Вам предстоит написать 11 программ. Задача
засчитывается, если Ваша программа прошла все тесты, в противном случае
Базовые типы данных Имеются несколько базовых типов данных: Integer, Char, Boolean и String. Константы этих типов записываются следующим образом. Константа типа String – это последовательность (длиной от 0 до 255) символов, заключенная либо в апострофы (▓), либо в двойные кавычки ("). При этом, если ограничители – апострофы, то внутри них апостроф удваивается, а кавычка нет. Аналогично, внутри кавычек двойная кавычка удваивается, а апостроф нет. В качестве символов будут использоваться ASCII-символы с кодами от 32 до 255. Единственная допустимая операция над строками – конкатенация (+). Константа типа Char – это константа типа String длины 1. Определена
операция Ord(<символ>), возвращающая ASCII-код заданного символа
Константы типа Boolean могут иметь только два значения: True и False. Над ними определены операции Or (или), And (и), Not (не). Кроме того, над всеми базовыми типами определены операции сравнения
(<, >, =, <=, >=, <>), которые возвращают результат типа Boolean. При этом
False < True.
Здесь:
1. <имя типа> – это идентификатор типа, который может быть определен как
до, так и после данного описания.
2. <перечислимый тип> ::= (<идентификатор 0> {,<идентификатор i>})
(i = 1, ..., N)
Возможны следующие операции над константами перечислимого типа:
Здесь <значение 1> и <значение 2> – константы одинакового типа, который
может быть одним из следующих: Integer, Char, Boolean, либо каким-то из
<перечислимых типов>. Если <значение 1> ? <значение 2>, то константы
<ограниченного типа> могут принимать любое значение из промежутка
[<значение 1>, <значение 2>]. Иначе множество констант этого типа пусто.
Над константами <ограниченного типа> допустимы те же операции, что и
над константами того типа, которому принадлежат <значение 1> и <значение
2>.
Константами <типа-последовательности>, описанного как Sequence Of <тип>, являются конечные последовательности констант типа <тип>. Константами <типа-последовательности>, описанного как Sequence (<поле> {, <поле>}), являются упорядоченные наборы из констант указанных типов (в том порядке, в котором они встречаются в описании). Однако при этом можно опускать те элементы, перед типами которых указано ключевое слово Optional. Константы <типа-последовательности> записываются следующим образом: {<Константа> {, <Константа>}}. Пустая последовательность обозначается символами { }. Над <типами-последовательностями> определена операция конкатенации <тип 1>@<тип 2>, результатом которой является новый тип, все константы которого получаются дописыванием к произвольной константе-последовательности <типа 1> справа константы-последовательности <типа 2>. К образованным таким способом новым типам опять можно применять операцию конкатенации. Аналогично, операция конкатенации определена и для констант
рассматриваемых типов. Кроме того, если для констант каждого из типов из
Константами <типа-множества>, описанного как Set Of <тип>, являются конечные множества констант указанного типа <тип>. В случае описания Multi Set Of <тип> это будут конечные мультимножества (т.е. множества, в которых элементы могут повторяться более одного раза). Константами <типа-множества>, описанного как Set (<тип> {, <тип>}) являются конечные мультимножества, полученные взятием произвольных констант указанных в описании типов (по одной константе каждого типа с учетом кратности). Константы <типа-множества> записываются следующим образом: {<Константа> {, <Константа>}}. Пустое множество обозначается символами { }. Над <типами-множествами> возможны следующие операции
(результатом которых является, как легко заметить, опять некоторый <тип-множество>): Plus (объединение), Minus (разность), Mul (пересечение).
Например, константы типа A Mul B – это те (мульти-) множества, которые
одновременно являются константами типа A и константами типа B. Эти же
операции определены (с учетом кратности элементов) и для констант <типов-множеств>. Например, {1, 2, 2} Minus {2, 3} = {1, 2}, {3, 3, 5} Mul {3, 5, 5} =
{3, 5}.
Определения этих операций см. выше.
Комментарий – это последовательность символов любой длины,
начинающаяся с символов // и заканчивающаяся символами перевода строки.
Комментарии могут располагаться в любом месте программы и должны
опускаться при разборе.
Страница: << 8 9 10 11 12 13 14 [Всего задач: 67] |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|