Помощь - Поиск - Пользователи - Календарь
Полная версия: Олимпиадные задачи (с окончившихся олимпиад)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Страницы: 1, 2
AlaRic
Внимание!
В этой теме публикуем только сами задачи и их решения... Обсуждения - в отдельных темах!!!

------------------------------------------------------------

Автобусные билеты в рулоне пронумерованы от 000001 до 999999. Составить программу, выводящую на экран количество и номера (в несколько столбиков) всех счастливых билетов в некотором диапазоне, организовав запрос начального и конечного номера билета диапазона.
Примечание: Счастливым считать тот билет, у которого сумма первых трех цифр равна сумме трех последних.

------------------------------------------------------------

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

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

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

В клетках таблицы расставлены числа. Расставить в этих клетках K ферзей так, чтобы они друг друга не били и чтобы сумма чисел, ими закрываемых, была максимальной.
------------------------------------------------------------

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

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

Заменить буквы цифрами так, чтобы соотношение оказалось верным:
ХРУСТ*ГРОХОТ=РРРРРРРРРРР

------------------------------------------------------------

При поступлении в вуз абитуриенты, получившие двойку на первом экзамене, ко второму не допускаются. В массиве A[n] записаны оценки, полученные на первом экзамене. Подсчитать, сколько человек не допущено ко второму экзамену.
------------------------------------------------------------

Составить программу, которая формирует список L, включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входят в другой.
AlaRic
Последовательность целых чисел строится следующим образом:
- первое задается (обозначим его через a),
- каждое следующее число является суммой цифр квадрата предыдущего.
Например, если a=4, то получится последовательность 4, 7, 13, 16, ...
По заданным a и n определить n-е число в этой последовательности. Известно, что a<10000 и n<1000000.
Slam
Телефонный номер называется «шахматным», если его цифры набираются на телефонном кнопочном номеронабирателе ходом шахматного коня. Написать программу, подсчитывающую, сколько можно набрать различных семизначных «шахматных» номеров, начинающихся с заданной цифры.
1 2 3 
4 5 6
7 8 9
0
Ivs
"Театр"
В театре N мест, пронумерованных целыми числами от 1 до N. Некоторые из зрителей опоздали на спектакль, поэтому после третьего звонка те зрители, которые имели билеты на неудобные места, пересели на более удобные. Опоздавшие зрители, которые пришли уже после третьего звонка, садились на первое попавшееся свободное место.

В антракте один из опоздавших зрителей решил сесть на свое место. Если его место до этого было занято, то тот, кто там сидел, пересаживался на свое место. Если и там кто-то уже сидел, то и этот зритель также вынужден был вернуться на свое место. И так далее.

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

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

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

Входной файл: INPUT.TXT
Выходной файл: OUTPUT.TXT

Формат входных данных:

Входной файл INPUT.TXT состоит из трех строк. В первой строке содержится целое число N (N<=30000) — количество мест в зале.

Вторая строка содержит последовательность из N целых чисел, разделенных пробелами, где первое число определяет номер места в билете у зрителя, который занял место с номером 1, второе - номер места в билете у зрителя, который занял место с номером 2, и так далее. Если место было свободно, то соответствующее число равно 0.

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

Формат выходных данных:

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

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

INPUT.TXT:
10
0 2 5 3 1 0 0 0 0 0
4

OUTPUT.TXT:
3

Решение (Показать/Скрыть)
Флогримм
Задача "Навигатор кладоискателя"

Описание
Имеется лабиринт прямоугольной формы M на N, в котором в клетке с координатами (KLI, KLJ) зарыт клад (KLI - номер строки, KLJ - номер столбца).
Кладоискатель находится в клетке с координатами (1,1), имеет план лабиринта с указанием месторасположения клада.

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

Входные данные:
6{m}
7{n}
4{kli}
5{klj}
0011101{0-проходимая клетка, 1 -нет}
0010101
0111110
1101011
0101110
0101010


Предлагайте свои алгоритмы!!!

пример входного файла:
6
7
4
5
0011101
0010101
0111110
1101011
0101110
0101010



Решение с пояснениями (Показать/Скрыть)
Флогримм
Прохождение лабиринта методом волновой трассировки(или просто волновой алгоритм)!

1) http://www.codemanual.net/main/algo/alg20.htm
Достаточно подробное объяснение. Без кода, только алгоритм.
В статье описывается метод, когда можно ходить по диагонали! во многих задачах обычно такой возможности нету, так что можно его немного переделать, учтите это.


2) http://algolist.manual.ru/games/wavealg.php - алгоритм+код
corazon
------------------------------------------------------------

Игрок А выбирает натуральное число X, 1<= X <= N. Игрок В должен угадать число X при помощи вопросов вида «Число X больше или равно К?», где К – некоторое натуральное число. На каждый вопрос игрока В игрок А отвечает честно и не меняет число X. Игрок В платит игроку А за ответ «Да» - 2 руб., за ответ «Нет» - 1 руб. Определите для данного N наименьшую сумму денег Р(N), достаточную для угадывания любого числа X, 1<= X <= N. Постройте алгоритм, по которому игрок В задаст вопросы таким образом, что угадает число X и при этом заплатит не более Р(N) рублей.
------------------------------------------------------------

Лабиринт из N комнат задан таблицей соединений(матрица смежности), в которой для каждой пары комнат указано, соединены ли они коридором. Построить путь из комнаты с номером i в комнату с номером j. (реализуется с помощью алгоритма Дейкстры)
Altair
------------------------------------------------------------

<<Умная пчела>> (6 баллов, 1 секунда на тест)

__F
E__A
D__B
__C
В улье, изображенном на рисунке, ползает пчела. Соты улья представляют собой правильные шестиугольники, поэтому пчела может переползти из одной соты в соседнюю ней через любую из 6 граней. Каждое направление движения обозначается заглавными латинскими буквами от A до F, как показано на рисунке. При записи пути движения пчелы указывается направление движения и число последовательных переходов, совершенных в этом направлении. Так, например, 4 перехода в направлении В записываются как В4. Утром пчела начала свой путь и к вечеру оказалась в некоторой точке улья. Требуется написать программу, которая определяет, за какое минимальное число переходов пчела сможет вернуться в исходную точку, если известна полная запись маршрута. Размер улья можно считать бесконечным.

Формат входных данных:
Текстовый файл input.txt, содержащий одну строку, представляющую запись пути пчелы. Считать, что входная строка не более 80 символов и не содержит синтаксических ошибок. Между командами никакие разделители не ставятся. Число повторений, указанное после команды, находится в диапазоне от 1 до 999 включительно.
Формат выходных данных (вывод на экран):
Целое неотрицательное число - искомое минимальное число переходов
Пример 1
файл input.txt: A1B1C1D1E1
Выходные данные: 1
Пример 2
файл input.txt: A32B33D32A1
Выходные данные: 34
------------------------------------------------------------

<<Произведение дробей>> (12 баллов, 10 секунд на тест)Найти произведение N обыкновенных дробей, записав ответ в виде обыкновенной несократимой дроби.
Например, (3/8)*(2/8)*(14/9)=(7/30).
Формат входных данных:
Текстовый файл input.txt, в первой строке которого записано натуральное число N (1М<10000). В каждой из последующих строк указана пара натуральных чисел - числитель и знаменатель одной дроби. Данные таковы, что числители и знаменатели исходных дробей и числитель и знаменатель ответа после его сокращения не превосходят 30 000.
Формат выходных данных (вывод на экран):
Два натуральных числа - числитель и знаменатель ответа.
Пример:
файл input.txt
3 8
2 5
14 9
Выходные данные:
7 30
------------------------------------------------------------

«Часы» (12 баллов, 1 секунда на тест)
Каждая цифры в электронных часах изображена некоторыми из 7 штрихов. Штрихи пронумерованы сверху вниз, слева направо, как показано на рисунке. Цифры получаются следующими штрихами: 0-1,2,3,5,6,7; 1-3,6; 2-1,3,4,5,7; 3-1,3,4,6,7; 4-2,3,4,6; 5-1,2,4,6,7; 6-1,2,4,5,6,7; 7-1,3,6; 8-1,2,3,4,5,6,7; 9-1,2,3,4,6,7. Часы выпущены фирмой «VREMENI.NET», и поэтому в некоторых цифрах часть штрихов пропала. По имеющемуся изображению цифр на часах определить, какое время часы могли бы показывать. Все возможные варианты вывести в порядке возрастания времени.
Формат входных данных:
Текстовый файл input.txt содержит четыре строки (часы и минуты) по семь символов в каждой. Один символ может быть либо нулем либо единицей: 0 - соответствующий штрих в цифре не горит, 1 - штрих в цифре горит. Например, последовательность 1100010 означает, что горят штрихи 1, 2 и 6.
Формат выходных данных:
Текстовый файл output.txt, содержащий строки в формате ЧЧ:ММ - возможное время в порядке возрастания.
Пример:
файл input.txt:
1110111
1110111
1110111
1110111
файл output.txt:
00:00
00:08
08:00
08:08
------------------------------------------------------------

«Бассейн» (15 баллов, 1 секунда на тест)
Бассейн емкостью 500 м3 наполняется из трех труб A, В, С со скоростями потоков 20, 40 и 100 м3/ч соответственно. Слив производится через три стока D, Е, F с пропускными способностями 30, 50 и 80 м3/ч соответственно, либо через естественный перелив. Открытие и закрытие труб/стоков производится только на границе некоторого часа. Имеется журнал открытия и закрытия труб и стоков за сутки, при этом одна и та же труба/сток может за сутки открываться (закрываться) неоднократно. В один и TOT же час возможно несколько операций (над различными трубами/стоками). Определить, в течении какого количества часов (с точностью до 0.001 часа) вода переливалась через край бассейна при условии, что в 0 часов бассейн был пуст.
Формат входных данных:
В первой строке файла input.txt записано натуральное число N - количество записей в журнале. В каждой из N последующих строк указано целое число - номер часа и через пробел название трубы/стока. Если труба/сток была закрыта - она открывается, если открыта - закрывается.
Формат выходных данных (вывод на экран):
Действительное число с тремя десятичными знаками после запятой - количество часов, в течение которых
вода переливалась через край бассейна.
Пример:
файл input.txt:
4
0 A
5 С
10 F
11 С
Выходные данные:
2.667
------------------------------------------------------------

<<Стираем числа>> (25 баллов, 1 секунда на тест)
На доске записаны подряд натуральные числа от 1 до N (N < 1 000 000 000). Сначала стирают все нечетные числа. Из оставшихся стирают все числа, стоящие на четных местах, затем снова стирают все числа, стоящие на нечетных местах, и так далее, пока не останется одно число. Какое это число?
Пример:
Входные данные: 10
Выходные данные: 6
------------------------------------------------------------

<<Строки>> (30 баллов, 1 секунда на тест)
На вход подаются строки A и В. Необходимо преобразовать строку A в строку В с минимальным суммарным штрафом, который определяется следующим образом: a) удаление символа из строки A - х баллов; б) вставка символа в строку A - у баллов; в) замена символа в строке A на любой другой символ - z баллов. Напишите программу, определяющую минимальный суммарный штраф при преобразовании строки A в строку В.
Формат входных данных:
Файл input.txt, содержащий две строки A, В (длины строк < 255) и три целых неотрицательных числа х, у, z - по одному числу в строке.
Формат выходных данных (вывод на экран):
Одно целое неотрицательное число - минимальный суммарный штраф.
Пример:
файл input.txt:
мама
папа
1
1
10
Выходные данные:
4
Jahnerus
Нус! ... раз можно постить свои реализации ... то почему бы и нет!

<<Стираем числа>> (25 баллов, 1 секунда на тест)

Реализация (Показать/Скрыть)
LammerzAttack
Имя входного файла: divider.in
Имя выходного файла: divider.out
Количество тестов: 30
Ограничение по памяти: 1 Мб
Ограничение по времени: 1 с

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

Формат входного файла
Во входном файле записано число 9 < N < 1000000001

Формат выходного файла
На первой строве число искомых пар. Далее все возможные пары чисел, подходящих под условие задачи, в порядке возрастания первого числа, по одной паре в каждой строке. Пары должны выводитьсяв формате X + Y = N с пробелами между числами и знаками! В конце каждой строки должен стоять символ перевода строки.

Пример
divider.in
302

divider.out
5
251 + 51 = 302
275 + 27 = 302
276 + 26 = 302
281 + 21 = 302
301 + 01 = 302
LammerzAttack
Имя входного файла: maze.in
Имя выходного файла: maze.out
Количество тестов: 10
Ограничение по памяти: 1 Мб
Ограничение по времени: 10 с

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

Гвардия Принца Пришельцев палит в меня с балкончиков, я тоже стреляю - наугад. "BFG-9000" выжигает три зеркала одним залпом. Помещение наполнено серебряным дымом. Пули колотят по броне, сбивая меня на пол. Стреляю в падении, вращаюсь на спине, словно в забытом танце своей юности - "брейке", еще два раза стреляю. Три зеркала, три зеркала, три зеркала...

(Сергей Лукьяненко "Лабиринт Отражений")

BFG-9000 уничтожает три соседних балкончика с монстрами на них за один выстрел. После выстрела выжившие монстры ранят Леонида (главного героя повести) - 1 процент жизни каждый. Далее следует новый выстрел Леонида, новый выстрел монстров и тд, пока все монстры не погибнут. Необходимо добиться того, чтобы Леонид получил минимальные повреждения в этой схватке.

Формат входного файла
В первой строке число 2 < N < 17, количество балкончиков, на который монстры держат круговую оборону. Вторая строка содержит N натуральных чисел - количество монстров на соответствующем балкончике (не менее одного и не более 100 на каждом)

Формат выходного файла
Одно число - какое минимальное повреждение может получить Леонид.

Пример
maze.in
7
3 4 2 2 1 4 1

maze.out
9
LammerzAttack
Вот условие
Имя входного файла: polymer.in
Имя выходного файла: polymer.out
Ограничение по памяти: 1 Мб
Ограничение по времени: 10 с

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

Однако при тестировании на полигонах они столкнулись с новой проблемой — оказалось что при пошиве костюма молекулы одной цепочки начинают взаимодействовать друг с другом и взависиомсти от обхвата груди, ширины талии и бедёр солдата прочность костюма резко меняется. Учёные установили, что атомы в полимерных цепочках могут находиться в одном из m состояний (от 0 до m-1, состояния выражаются только целыми числами), где m — число характеризующее волокнистую цепочку полимера. Кроме того, теоретику Обоеву Рулону удалось доказать, что костюм остаётся прочным только если представив последовательность состояний атомов в цепочке в виде числа записанного в системе с основанием m оно делится на число p (число характеризующее обхват груди, ширину талии и бёдер солдата).

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

В первой строке целые числа p (1 < p < 256) и m (26 < m < 359). В следующей строке через пробелы записаны состояния всех атомов в цепочке. Кол-во атомов в цепочке не превышает 2000000.
Формат выходного файла

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

2 3
1 1
polymer.out
YES

В примере m меньше 26, так как это пример. Я не понимаю, что здесь надо сделать. Объясните пожалуиста смысл условия.
NightPaladin
Вот подумал над позапрошлой задачей. Извини забыл вывод в файл - ну так уж это - приспособишь

Реализация (Показать/Скрыть)


Вообще честно говоря решил не сам рациональным способом - скорее всего, т.к. оный наверное вообще не рассчитан на перевод в строку... но главное решение... smile.gif

Я исправил тип с Integer на LongInt, чтобы программа могла работать с большими числами (как указано в условии)
kuzya
Задача:
Дано выражение x*x+y*y=z*z (так называемые Пифагоровы тройки).
Вводится число N (N<=2000), причём x<=N, y<=N. Найти количество троек; все x, y, z, соответствующие данным условиям. X, Y, Z, N - целые положительные числа.

(Ограничение по времени 5 сек.)

Пример:
Ввод:
4
Вывод:
1
3 4 5

Решение задачи (Показать/Скрыть)


Однако при N = 1700 вычисление длится больше 5 сек.
kuzya
Задача: Дано натуральное число К. Напечатать К-ую цифру последовательности 123456789101121314..., в которой выписаны все подряд натуральные числа. (Последовательность в ЭВМ не вводить)

Есть решение (Показать/Скрыть)


Добавлено (Volvo):
Чтобы не было проблем с переполнением строки при больших K, эту задачу лучше решать на основе инварианта.

Первые 9 цифр - это однозначные числа (1 .. 9), вторые 90 - двухзначные (10 .. 99), дальше 900 трехзначных (100 .. 999), и т.д.


By Volvo (Показать/Скрыть)

Completed in 0.046999845653772 seconds

**********


By klem4 (Показать/Скрыть)

Completed in 0.078000104986131 seconds

**********


By hardcase (Показать/Скрыть)

Completed in 30.46800009906292 seconds

**********


By Malice (Показать/Скрыть)

Completed in 58.29700010363013 seconds
Mora
Задачки про файлы:
------------------------------------------------------------

Память на жестком диске компьютера разбита на параграфы, каждый размером 16 Кб. Файл может занимать только целое кол-во параграфов, даже если параграф занят не весь, то он все равно отдается файлу полностью. Во входном файле в одной через пробел указаны размеры файлов в байтах. Определите объем, занимаемый директорией на жестком диске.
------------------------------------------------------------

В файле задано некоторое кол-во цифр N (N<=10000). Цифры расположены в одне строчку и разделены пробелами. Требуется определить, можно ли из данных цифр составить N-значное простое число (нужно использовать все заданные числа и только их). Если возможно составить несколько N-значных чисел, программа должна определить их все. В первой строке выходного файла должно быть указано кол-во простых чисел, далее в каждой строке по одному числу.
Nosferatu
Площадь прямоугольников
Дано N прямоугольников со сторонами, параллельными осям координат. Требуется пределить площадь фигуры, образованной объединением данных прямоугольников.
Ввод из файла rectarea.in В первой строке находится число прямоугольников - N. Затем идут N строк, содержащих по 4 числа: X1, X2, Y1, Y2 - координаты двух противоположных углов прямоугольника.
Вывод в файл rectarea.out Вывести одно число - площадь фигуры

Пример
Ввод
2
1 1 3 3
2 2 4 4
Вывод
7
minkod
1. В трехмерном пространстве задан куб с ребром длиной 1.
Одна из вершин в точке с координатами, например,(0.0.0), а противоположная с координатами (1,1,1). По двум введенным вершинам определить, находятся ли они на одном ребре куба или на одной его грани.

2. По ребрам куба ползут тараканы. Все они ползут из вершины (000) в вершину (111) так, что каждый из них проползает при этом три ребра. Найти самое «истоптанное» ребро.

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

4. Вводится последовательность целых чисел (в диапазоне от -32000 до 32000). Требуется разбить их на пары так, чтобы произведения чисел в парах были одинаковы.
Входные данные: Вводится N (количество чисел), 1<=N<=100. Затем вводятся N целых чисел.
Выходные данные: Если разбить на пары можно, то выдать произведение чисел в паре (все варианты), иначе - сообщение "Нет решения".

5. Есть N лампочек и М переключателей, каждый из которых какие-то лампочки переключает, а какие-то нет.
Сначала часть лампочек включена. Договоримся горящие лампочки обозначать I. а выключенные - 0. Для переключателей будем писать I, если переключатель меняет состояние данной лампочки, и 0, если не меняет. Тогда любой переключатель можно представить строкой из N нолей и единиц. Начальное и конечное состояние лампочек также закодируем строкой из 0 и I. «Применение» переключателя к лампочкам приводит к тому. что включенные лампочки становятся выключенными, а выключенные включенными (естественно, это справедливо только для лампочек, к которым есть доступ от этого переключателя) Напишите программу, которая определяет, какие переключатели нужно применить, чтобы лампочки перешли в конечное состояние.
Входные данные: Вводятся числа N и M (1<=N<=50,1<=M<=50).
Вводится строка, характеризующая конечное состояние лампочек. Вводится M строк, характеризующих переключатели.
Выходные данные: Номера переключателей , которые нужно применить, причем каждый переключатель можно применить не более 1 раза, либо сообщение "Нет решения".
hardcase
Брутальня задача с контеста в CBOSS, когда-то пытался решить - не вышло.
Цитата
"Миное поле чудес" находилось на окраине Тьмускорпионии. Его карта представляла собой прямоугольник из клеток. В каждой клетке может находится либо не находится одна мина. На данный момент поле было частично исследовано - то есть про некоторые клетки известно, есть там мина или нет. При отсутствии мины в клетке известно общее кол-во мин в соседних (по стороне и углу) клетках. Известно также общее кол-во мин на поле.
В данной задаче по заданной начальной ситуации вы должны определить вероятности нахождения мин в неоткрытых клетках. Под вероятностью того, что в данной клетке находится мина, понимается отношение количества возможных вариантов расстановки мин, при которых в данной клетке находится мина, к общему количеству вариантов. При подсчёте кол-ва вариантов, мы должны считать только те расстановки, которые согласуются с заданной начальной ситуацией.
Гарантируется, что начальная ситуация задана корректно, т.е. существует по крайней мере одна расстановка мин, с ней согласующаяся. Также гарантируется, что кол-во клеток, соприкасающихся с открытыми клетками, не превышает 25.

Input: В первой строке файла записаны через пробел три целых числа N, M, K. M и N - размер поля (2<=N, M <= 20), а K - общее количество мин (0 <= K <= N x M)
В последующих N строках задаётся само поле. Каждая строка - M символов, каждый из которых описывает клетку поля. Символы '0'..'9' обозначают кол-во мин в соседних клетках. Прописная латинская 'X' - неоткрытая клетка. 'M' - клетка, в которой точно есть мина.

Output: В первой строке выходного файла всё те же N M K, в последующих - N строк по M вещественных чисел, каждое из которых - вероятность нахождения мины в соответствущей клетке.
Bill Gates
ФАЙЛОВЫЙ МЕНЕДЖЕР
Имя входного файла: far.in
Имя выходного файла: far.out
Петя работает над очень большим проектом. Проект содержит N файлов. В процессе работы Пете часто приходится просматривать и редактировать файлы. Для ускорения работы Петя использует файловый менеджер FAR Menager, который отбражает список имен файлов проекта в некотором порядке.
В текущей версии FAR Manager'а для перемещения по списку имен файлов есть следующие возможности:
1) Можно нажать клавишу "вниз", при этом курсор перемещается на следующий файл в списке. Для последнего файла в списке следующим считается первый.
2) Можно нажать клавишу "вверх", при этом курсор перемещается на предыдущий файл в списке, для первого файла предыдущим считается последний.
3) Можно нажать клавишу "Alt" и, удерживая ее, набрать последовательность латинских букв. После этого клавишу "Alt" следует отпустить, и в этот момент курсор переместится на ближайший файл, имя которого начинается с заданной последовательности символов. Ближайший файл - это файл, на который можно переместиться за наименьшее количество нажатий клавиши "вниз". Если заданная последовательность является началом имени текущего файла, или файла, имя которого начинается с этой последовательности, не существует, то курсор остается на месте.
Первая и вторая из описанных возможностей файлового менеджера требуют по одному нажатию на клавиши, а третья - одного клавиши "Alt" плюс нажатий, равное длине набранной последовательности латинских букв.
Файлы пронумерованы от 1 до N в порядке их следования. После загрузки FAR Manager'а курсор находится на первом файле.
Петя знает, что ему придется редактировать файл с номером a[1], затем с номером a[2] и так далее, а последним - файл с номером a[k]. В последовательности a[1], a[2], ..., a[k] один и тот же номер может встечаться несколько раз. При каждом перемещении от одного файла к другому Петя хочет нажимать как можно меньше клавиш.
Требуется написать программу, которая выдает искомую последовательность нажатий клавиш.

ФОРМАТ ВХОДНЫХ ДАННЫХ
В первой строке входного файла записано целое число N (1 <= N <= 1000) - количество файлов в проекте.
В следующих N строках записаны имена файлов, по одному в каждой строке. Файлы перечеслены в том порядке, в котором они отображаются файловым менеджером. Имена состоят только из строчных латинских букв. Длина каждого имени не превосходит 2000 символов. Все имена файлов различны.
Далее в следующей строке записано целое число k (1 <= k <= 10).
Последняя строка входного файла содержит k целых чисел a[1], a[2], ..., a[k] (1 <= a <= N) - номера редактируемых файлов. Редактирование файлов выполняется в том порядке, в котором они встречаются в последовательности a[1], a[2], ..., a[k].

ФОРМАТ ВЫХОДНЫХ ДАННЫХ
Выходной файл должен содержать описание искомой последовательности нажатий клавиш в виде k блоков информации:
* Первый блок информации описывает перемещение от файла с номером a[1] к файлу с номером a[2].
* Второй блок информации описывает перемещение от файла с номером a[2] к файлу с номером a[2].
* ...
* k-ый блок информации описывает перемещение от файла с номером a[k-1] к файлу с номером a[k].
Каждый блок информации выглядит следующим образом.
В первой строке блока записывается число L - наименьшее количество нажатий клвиш, необходимое для перемещения от очередного файла последовательности к следующему.
Следующие L строк блока описывают нажаимаемые клавиши. Каждая из строк содержит описание одной клавиши:
* Если нажимается клавиша "вниз", то в строке записывается слово down
* Если нажимается клавиша "вверх", то в строке записывается слово up
* Если нажимается клавиша "Alt", то в строке записывается слово Alt
* При нажатии клавиши с латинской буквой выводится соответсвующая ей латинская буква
Если существует несколько оптимальных вариантов перемещения, то требуется вывести любой из них.

ПРИМЕРЫ
========== ==========
far.in far.out
========== ==========
6 1
submit up
monitor 3
monitorx Alt
monyator m
subversion down
sub 0
5 2
6 3 3 5 2 down
down
2
Alt
m
========== ==========
8 3
abc Alt
abv a
abba u
test 2
auvto down
ioi down
olympiad
2
4 6
========== ==========
zZz
Вот все 6 задачек с XVIII Всероссийской олимпиады по информатике среди школьников, проходившей в Кисловодске (2006 год) ...
Нажмите для просмотра прикрепленного файла

И официальные аннотации к их решениям:
Нажмите для просмотра прикрепленного файла

Добавлено:
"...и официальные исходные тексты правильных решений на Delphi Console и C++" (автор сообщения - Bill Gates)
Нажмите для просмотра прикрепленного файла
skAmZ
Кот в шляпе.
Был кот с волшебной шляпой, любил погадить, но вот пришло время убираться, но "Зачем работать, если есть Волшебная шляпа?", - подумал кот. Кот достает из шляпы N количество котов поменьше; размер котов, которых он достает в N+1 раз меньше размера кота. Но эти котики поменьше тоже ленивые и тоже с волшебными шляпами, в конце концов работают только самые маленькие коты размером 1, которые не чего не могу достать из своей шляпы.

Входные данные (читаются из файла Input.txt): размер самого большого кота, количество работающих котов.
Выходные данные (пишутся в файл Output.txt): общий размер всех котов, количество не работающих котов.
Регламент: время 0.5 сек, 1 Мб, N < 1 000 000

Пусть количество работающих котов K, размер главного кота P.
Все задача сводится к нахождению N, это делается не столько сложно, так как каждый раз из шляпы выходят N котов с массой N+1/(размер кота, который вытаскивает из шляпы котов), то получаем цикл:
For i:=1 to 32 do begin
if exp((1/i)*ln(k))-exp((1/i)*ln(p))=1 then begin
n:=i;
Break;
end;
end;
.
Цикл до 32 потому что N > 1 000 000 больше просто не может быть. Нашли N, все остальное понятное дело ищется по формуле. Тут есть 1 частный случай, когда входные данные 1 1, на выходе соответственно получаем 1 0.
Sufix
Дано два числа a и b. Вывести их разность (a-b).
Входные данные
Во входных данных содержатся два числа a и b, разделенные пробелом
Выходные данные
Выведите одно число - искомую разность.
Ограничения
a,b<=10 в 100 степени




Поздравив ослика Иа с днём рождения (описание праздника мы пропустим), вдруг обнаружилось, что у именинника пропал хвост! Как всегда, его украл слонопотам.
В сказочном лесу n селений. Некоторые из селений соединены дорогами. Время передвижения по каждой дороге, соединяющей селения, известно. Никакие две дороги не пересекаются вне селений. Благодаря новейшей системе GPS, введенной недавно в лесу, нам известно, что слонопотам сейчас находится в селении v. Иа и его гости в это время находятся в селении u. Для того, чтобы сделать именинника счастливым, необходимо срочно добраться до города v и отобрать похищенный хвост у злобного слонопотама!
Помогите друзьям Иа-Иа определить минимальное время, за которое они смогут добраться до слонопотама.
Входные данные:
В первой строке входных данных содержатся три числа: n, u и v (1<=n<=100; 1<=u,v<=n), где n - количество селений, u - селение, в котором находятся спасители хвоста, а v - селение, в котором засел слонопотам.
В следующих n строках содержится по n чисел. J-е число на строке I определяет дорогу между селениями i и j. Если это число равно -1 - то селения i и j не соединены дорогой. Если число является неотрицательным - то это означает, что между селениями i и j есть дорога, и время проезда по этой дороге равно этому числу.
Заметьте, что поскольку лес - волшебный, то наличие дороги из i в j не гарантирует наличие дороги из j в i, к тому же, даже если существуют дороги в обе стороны, то время проезда по дорогам, соединяющим одни и те же селения, может различаться в зависимости от направления движения.
Выходные данные
Выведите искомое минимальное время или -1, если пути между селения u и v не существует.
Примеры
Входные данные
3 1 2
0 -1 2
3 0 -1
-1 4 0
Выходные данные
6
P.S. give_rose.gif буду благодарен по гроб жизни, если поможете, или хотябы намекнете в сторону чего смотреть
t3rmin@1
Помогите плиз с задачкой.

Нужно составить расписание автобусов

Есть исходный файл c:\data2.txt, в котором содержатся данные. Первая строка содержит 4 целочисленных цифры: количество остановок (не больше 100), скорость в км/ч, начало отъезда из начальной остановки в часах, четвёртая - то же самое, но в минутах.
Остальные строки содержат инфо о остановках: название (длина названия - не более 15 символов) и расстояние между пунктами в км в вещественном представлении.

Например:
3 60 10 15
Chicago 30.25
Detroit 27.09
Boston 10

т.е. расстояние между Chicago и начальной остановкой - 30.25, между Detroit и Chicago - 27.09 и т.д.

Нужно записать данные в файл c:\data3.txt в таком виде:

Сhicago 10 hr 58 min
Detroit 11 hr 59 min
Boston 12 hr 35 min


Требования к программе:
данные и результаты хранить в массиве (массивах) с элементами типов записей (type=record..end;)
создать и использовать процедуру считывания данных в массих с элементами типов записей.
создать и использовать процедуру для записи результата в файл
использовать в программе функцию:

function time(s,v:real):integer;
begin
time:=Trunc(s/v*60);
end;
где s - расстояние, пройденное автобусом, v - средняя скорость автобуса в км/ч.


Самая большая проблема для меня - считать данные из файла.
Хотя бы это напишите, пожалуйста smile.gif
mamont001
Куреры

В городе X все жители очень любят пиццу .компания 3 толстяка решила на етом заработать.
По всему городу на перекрестках она раставила N куреров .В городе живет M толстяков.
Составить програму ,которая бы высчитала минимальное растояниекоторое должны пройти куреры.
M>N
2<N<1000000
4<M<10000000000
Длинной арифметикой пользоватся запрещается!!!

Формат входного файла courier.in
1 стока : N M
2 строка : кординаты всех N
3 строка : кординаты всех m

Формат выходного файла courier.out
X


Решение (Показать/Скрыть)

Кстати у меня в примере все несколько обрезано, потому-что я не знаю как ещё обеспечить большие числа mega_chok.gif
ammaximus
Час назад закончился 2 этап Росиийской олимпиады школьников по информатике. Будем ждать результатов, а пока...
Задача 1.
Даны два слова А и В. Проверьте, можно ли из букв слова А составаить В. Каждый символ из А использовать не более 1 раза.

Задача 2.
Очки на игральных кубиках располагаются так, чтобы совпадали суммы чисел на противоположных гранях:1+6=2+5=3+4=7. Составьте программу, которая по заданному (неупорядоченному) набору из 6 целых чисел из диапазона 1 .. 10 000 проверяла бы, можно ли разместить их на гранях кубика таким образом, чтобы выполнялось это правило. Если можно - вывести сумму, иначе символ N.
Пример: 1,2,3,4,5,6; Результат 7.

Задача 3.
Числом Армстронга называется число из n цифр, если сумма его цифр, возведенных в n-ю степень равна самому числу. Найти все n-значные числа Армстронга (1<n<10).
Пример: 153=1^3+5^3+3^3 - число Армстронга.

Задача 4.
Числа от 1 до n расставлены по кругу. Вычеркиваем каждое второе число, начиная с 1. Написать программу, которая определит какое число останется последним и напечатает его. Исходное натуральное число - 1<n=<=1 000 000. Общий случай: определите количество шагов для произвольного числа.
Vinchkovsky
Задача 1 (Показать/Скрыть)


Задача 2 (Показать/Скрыть)


Задача 3 (не оптимизированная) (Показать/Скрыть)


____________________________________________________________________

Задача 2 (20 баллов из 130, 2 этап Всеукраинской школьной олимпиады)

Городок состоит из n домов, которые стоят вдоль прямого шоссе на одном расстоянии один от одного. В городке проводят телефонное подключение, в каждом доме нужно поставить k (0<=k<=30000).
В первом рядке файла TEL.DAT содержится количество домов (1<=n<=1000). В следующем рядке через пропуск - количество телефонов, которые должны быть установлены в домах.
Вывести на экран и в первый рядок файла TEL.SOL номер дома, в котором нужно поставить АТС, чтобы общее количество кабеля от каждого телефона к АТС было минимальным. Если таких домов несколько, то написать их в порядке увеличения через пропуск.
Каждый телефон соединен отдельным кабелем. Если телефон находится в том доме, что АТС, то считать, что кабеля не ведем.
Пример входных данных:
5
1 2 3 2 1
Пример выходных данных:
3
Zzzz...
Задача A. Закон Амдала

Имя входного файла: amhdal.in
Имя выходного файла: amhdal.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 64 мегабайта

Параллельное программирование изучает методы построения программ, которые будут
выполняться на нескольких процессорах. В результате решения одной из первых задач этого раздела информатики появился закон Амдала.
Задача Амдала формулировалась так. Имеется n процессоров и p процентов вычислений не могут выполняться параллельно. Во сколько раз быстрее можно выполнить вычисления по сравнению с одним процессором?
Например, если n = 10, p = 50, а на одном процессоре все вычисления выполняются за время
t. Тогда первая половина вычислений (50%) будет выполнена за время t / (2•10) , а вторая — за время t / 2.
Общее время вычислений в этом случае составит t / 2 + t / 20 = 11•t / 20, а ускорение по сравнению с одним процессором составит 11 / 20 раза.
Если же n = 10, p = 25, и на одном процессоре все вычисления выполняются за время t. Тогда
75% вычислений будут выполнены за время 3•t / (4•10) , а оставшиеся 25% — за время t / 4 . Общее время вычислений в этом случае составит t / 4 + 3•t / 40 = 13•t / 40 , а ускорение по сравнению с одним процессором составит 40/13 раза.
Даны числа n и p. Напишите программу, решающую задачу Амдала.

Формат входного файла

Входной файл содержит два целых числа n (1 ≤ n ≤ 1000) и p (0 ≤ p ≤ 100).

Формат выходного файла

В выходной файл выведите ответ на задачу с точностью не хуже 10−6.

Примеры

amhdal.in amhdal.out
10 50 1.818181818
10 25 3.076923077
1000 100 1.00000000000
1000 0 1000.000000000
239 30 3.301104972
777 55 1.816269285

Задача B. Биатлон

Имя входного файла: biathlon.in
Имя выходного файла: biathlon.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 64 мегабайта

На Зимних Олимпийских Играх традиционно проводятся соревнования по биатлону. Как известно, этот вид спорта содержит лыжные гонки и стрельбу по мишеням из винтовки. На каждом огневом рубеже расположены 5 мишеней. Каждая из них имеет форму круга радиусом 10 см, а расстояния между центрами соседних мишеней одинаковы и равны 25 см. Центры мишеней при этом расположены на одной горизонтали.
Введем прямоугольную систему координат так, что начало координат расположено в центре самой левой мишени, ось Ox направлена вправо, а ось Oy — вверх. Таким образом, центры мишеней имеют координаты (0, 0), (25, 0), (50, 0), (75, 0) и (100, 0).
Для информационного обеспечения проведения соревнований было решено разработать систему подсчета количества пораженных мишеней. Эта система по точкам, в которые попали пули после выстрелов спортсмена, должна определять количество пораженных мишеней. Мишень считается пораженной, если в нее попала хотя бы одна пуля (при этом, разумеется, если в мишень попали две или больше пуль, то попадание считается только один раз).
На спринтерской гонке на каждом огневом рубеже у спортсмена есть 5 пуль. Вам даны координаты точек, в которые попали пули после выстрелов спортсмена. Определите количество пораженных мишеней.

Формат входного файла

Входной файл содержит ровно пять строк: i-ая из них содержит два целых числа xi и yi —
координаты точки, в которую попала пуля после i-ого выстрела спортсмена. Все числа во входном файле не превосходят 1000 по модулю.

Формат выходного файла

В выходной файл выведите единственное число — количество пораженных мишеней.

Примеры

biathlon.in biathlon.out
0 0 \ 5
25 0 \
50 0 \
75 0 \
100 0 \
______________________
0 0 \ 3
0 0 \
0 0 \
75 0 \
100 0 \

Задача C. Список

Имя входного файла: list.in
Имя выходного файла: list.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 64 мегабайта

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

Формат входного файла

В первой строке входного файла содержится целое число n (1 ≤ n ≤ 1000) — размер набора. Вторая строка содержит n задающих набор целых чисел, по абсолютной величине не превосходящих 10000, разделенные пробелами. Одно число может встречаться в этом описании несколько раз.

Формат выходного файла

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

Примеры

list.in list.out
7
1 3 5 -1 3 4 6 -1, 1, 3, ..., 6
Bard
Цитата(Slam @ 19.03.2003 20:11) *
Телефонный номер называется «шахматным», если его цифры набираются на телефонном кнопочном номеронабирателе ходом шахматного коня. Написать программу, подсчитывающую, сколько можно набрать различных семизначных «шахматных» номеров, начинающихся с заданной цифры.
1 2 3 
4 5 6
7 8 9
0
Я надеюсь что сделал эту прогу...
А вот и решение: (Показать/Скрыть)
good.gif
Рыжик
"Задача о восьми ферзях"

На шахматной доске 8 на 8 нужно расположить
8 ферзей так,что бы они не били друг друга.
Формат ответа:
Порядковый номер клетки снизу-вверх:
14747256 так расположено в файле
Dmitriy
Цитата(AlaRic @ 8.03.2003 18:52) *
Автобусные билеты в рулоне пронумерованы от 000001 до 999999. Составить программу, выводящую на экран количество и номера (в несколько столбиков) всех счастливых билетов в некотором диапазоне, организовав запрос начального и конечного номера билета диапазона.
Примечание: Счастливым считать тот билет, у которого сумма первых трех цифр равна сумме трех последних.


Решение: (Показать/Скрыть)
Postman
Задача "Вирус"
Имя входного файла: Input.txt
Имя выходного файла: Output.txt

Колония клеток представляет собой квадратную матрицу порядка N (N<500). В колонию проникает M (M<11) вирусов, которые поражают клетки с координатами (X1,Y1), ... ,(Xm,Ym). За одну единицу времени вирус проникает в клетки, соседние с зараженными (соседними считаются клетки, имеющие общую сторону). Требуется написать программу, которая определит время заражения всей колонии.

Входные данные
Формат входных данных:
1 строка - N
2 строка - M
3 строка - X1 Y1
4 строка - X2 Y2
...
M+2 строка - Xm Ym

Выходные данные
В выходной файл запишите число - время заражения.


Пример входного файла
5
2
1 2
5 5
Пример выходного файла
4
kornet
Цитата
Автобусные билеты в рулоне пронумерованы от 000001 до 999999. Составить программу, выводящую на экран количество и номера (в несколько столбиков) всех счастливых билетов в некотором диапазоне, организовав запрос начального и конечного номера билета диапазона.
Примечание: Счастливым считать тот билет, у которого сумма первых трех цифр равна сумме трех последних.


Решение: (Показать/Скрыть)


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


Решение: (Показать/Скрыть)
мисс_граффити
Олимпиада еще не кончилась, решения будут принимать до 15.00... Но вряд ли за час кто-то кинется выкладывать свои мысли, поэтому размещу условия.

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

2. Имеется набор из N десятичных цифр (3<=N<=19). Требуется найти все возможные варианты равенства вида:
A * B = C,
где A, B и C – числа, составленные из этих цифр. В каждом примере умножения должны быть использованы все цифры набора, причем каждая – ровно один раз. Запись числа не может начинаться с цифры 0, за исключением числа ноль.

3. Робот “Суперслизень-2007” ползает по плоскости, оставляя за собой тонкий след краски. Движение робота описывается его программой – строкой из команд N, W, S, E. По команде N робот проползает один метр в северном направлении, по команде W – один метр в западном направлении, S – один метр южном направлении, E – один метр в восточном направлении.
Программа составлена так, что путь робота начинается и заканчивается в одной точке; кроме неё, ни в одной другой точке плоскости робот не бывает больше одного раза.
Необходимо найти площадь участка, границей которого служит след Суперслизня после завершения роботом программы.

Задачи взяты отсюда.
От 1 и 3 потом выложу свои решения, а вот вторую толком не решила (перебор - это не решение. да и по времени не укладывается в разрешенные 20сек)...
Zzzz...
Это задачи с VIII Всероссийской командной олимпиады школьников по программированию (ВКОШП)
mega111
Известный скульптор решил создать монумент под названием "Мост между Востоком и Западом". "Мост" он решил выложить из блоков, оставшихся посл разборки Берлинской стены, а по краям "Моста" постановить 20-метровые аллегорические фигуры Востока и Запада. "Мост " должен выглядить как лестниц, сначала растущая на 1 фунт от ступеньки к ступеньке, затем убывающая таким же образом.
Каждая ступенька представляет собой штабель *параллелипипед) из положенных друг на друга блоков гранями с одинаковыми размерами. Разные ступеньки могут иметь разную ширину и длину, так как блоки можно ставит друг на друг тремя способами.
Чтобы "Мост" не терялся на фоне гигантских скульптур, его высота должная быть как можо больше, а сред вариантов с одинаковой максимальной высотой предпочтительней вариант с большей длиной.
Напишите программу, которая вычислит максимальную высоту и длину моста по количеству имеющихся блоков и их размерам. После строительства "моста" может остаться несколько лишних блоковю
Ввод содержит три целых числа N (1<=N<=5000) W (1<=W<=50) H )1<=H<=50) -количество имеющихся в наличии блоков, ширина и длина блока в футах )толщина блока равна 1 фут)ю\Вывести два целых числа - максимальную высоту моста и его длиную
Пример ввода
5 10 20
ПВывод для примера:
2 60
P.s. в задаче ввод данных производиться из файла INPUT.TXT а вывод результата в файл OUTPUT.TXT.Формат ввода соответсвует спецификации
renesko
A. Треугольники
На плоскости расположено N невырожденных треугольников. Найдите точку плоскости, которая покрывается наибольшим количеством треугольников. Если таких точек несколько, достаточно найти любую из них. Точка покрывается треугольником, если она лежит внутри него, либо на его границе. Треугольник задается координатами своих вершин. Ограничение на N поставьте сами.



B. Волшебные вектора
Назовем упорядоченный по неубыванию набор из N натуральных чисел волшебным N-вектором, если сумма этих чисел равна их произведению. Задано число N. Найдите все волшебные N-вектора.
Например, существует 3 волшебных 5-вектора:
1 1 1 2 5
1 1 1 3 3
1 1 2 2 2
Ограничение на N поставьте сами.


C. Интервалы
Петя совершил хакерский налет на сервер компании Macrohard, в результате чего ему достался объектный файл, в котором содержится скомпилированный код некоторой функции secret. Эта функция берет в качестве параметра целое число и возвращает 0 либо 1.
Петя решил исследовать эту функцию и выяснить, что она делает. С этой целью он хочет вызвать ее для всех чисел от 1 до 106 и те значения параметра, на которых функция выдает 1 вывести на экран. Однако, поскольку количество различных чисел, которые придется вывести на экран может оказаться очень велико, то Петя хочет выводить их в виде интервалов подряд идущих чисел, причем если интервал имеет длину 1, то выводить только одно число. Например, вместо
1,3,4,5,6,7,8,10,12,20,21,22,23,24,…
Петя хочет выводить
1,3-8,10,12,20-24,…
Напишите программу, которая выведет значения параметра, на которых функция выдает 1, в нужном формате. Считайте, что Ваш язык программирования дополнен функцией secret:
function secret(x: longint): integer;
int secret(long int x);
function secret(x as long) as integer
Помните, что компьютер, на котором Петя запустит свою программу довольно слабый, и у него мало оперативной памяти, поэтому хранить все значения, на которых функция вернет 1 в памяти даже в виде интервалов может оказаться невозможным.


D. Наименьшее кратное подмножество
Задано множество из N натуральных чисел: . Требуется найти такое минимальное положительное M, чтобы можно было выбрать M чисел из заданного множества так, чтобы их сумма делилась на N. Например, для множества из пяти элементов
1 3 1 7 1
M=2, т.к. можно выбрать 2 числа (3 и 7), сумма которых 3+7=10 делится на N=5, а одно число кратное 5 выбрать нельзя.
Задано число N1000 и числа . Найти соответствующее минимальное положительное M, либо выяснить, что такого M не существует, т.е. нельзя выбрать из заданного множества несколько чисел, чтобы их сумма делилась на N.


E. K двоичных единиц
Найдите количество чисел Z, удовлетворяющих неравенству , таких, что в записи двоичного разложения Z используется ровно единиц. ( , ) Например, если A=10; B=20; K=2, то таких чисел 5 (это числа 10=10102; 12=11002; 17=100012; 18=100102; 20=101002).
Помните, что перебор всех чисел неэффективен, так как при данных ограничениях занимает слишком много времени.



F. Частотный анализ
Дан текст, в котором встречаются слова, состоящие из букв русского и латинского алфавитов и цифр, знаки препинания, пробелы и переводы строк. Требуется найти количество вхождений каждого слова в этот текст и вывести слова отсортированными по невозрастанию этого количества. Для каждого слова при выводе в скобках указать количество его вхождений в текст. Например, для текста
один, два - это 2, три один два, много слов один
надо вывести
один(3) два(2) это(1) 2(1) три(1) много(1) слов(1)
Слова, которые встречаются в тексте одинаковое количество раз, должны быть выведены в том порядке, в котором они впервые встречаются в тексте.

другие задачи и коментарии здесь------------>Нажмите для просмотра прикрепленного файла
James Montegry
Помогите, кто чем может, плиз, очень нужно.

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

Условия:
Программа должна ввести с клавиатуры сначала число N - количество элементов в последовательности. Далее, в одну строчку через пробел N целых чисел - значения элементов.

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

Вход:
10
21 1 2 2 1 3 4 5 5 4

выход:
4
2
2 5
7 10


2. Район Глупхеттен имеет форму точного квадрата ы разделенный улицами на квадратные кварталы. Улиц каждого вида есть 2N+1 (з координатами от (-N) до N). Глупхеттенцы любят проводить гонки по квадратной спирали. Старт гонок всегда размещают в центре с коорданатами (0;0), траса идет сначала 1 квартал на север, потом 1 квартал на восток, два квартала на юг и т.д.
Нужно написать программу, которая решит такую задачу: два перекрестка заданые своими (х,у)-координатами, нужно найти длинну пути между этими перекрестками в доль гоной трассы.

Программа должна прочитать входные данные с текстового файла, который имеет в первой строчке число N, которое задает размеры Глупхеттена, а во втором и в третьем - по паре целых чисел, что задают координаты перекрестков.
Нужно ввести в другой текстовый файл единственную строчку - найденную длиннупути между перекрестками.

Вход:
5
2 1
3 1

Выход:
19
James Montegry
Центральный сад страны Олимпия настолько большой, что один садовник не в силах его обслуживать. Было принято решение разделить сад на две части. Определенные деревья будут отнесены к первой части, а оставшиеся – ко второй. Одна из частей сада может остаться пустой.
Между каждой парой деревьев в саду протоптаны тропинки. Когда садовники идут от дерева к дереву, они обязательно идут по тропинке соединяющей непосредственно эти два дерева. Длина тропинки одинакова при перемещении в обе стороны.
Для упрощения работы садовников, разделение решили проводить так, чтобы длина самой длинной тропинки между парой деревьев, принадлежащих одной и той же части, была минимальна.
Задание
Напишите программу TREES, которая по информации о длинах тропинок между всеми парами деревьев находит длину самой длинной тропинки между деревьями из одной части сада, при оптимальном разделении сада на части.
Входные данные
Первая строка входного файла TREES.DAT содержит целое число N (2≤N≤1000) – количество деревьев в саду. Каждая i-ая из последующих N-1-ой строк содержит N-i чисел, которые последовательно представляют длины тропинок между i-ым деревом и деревьями с i+1-го до N-го. Все числа целые, неотрицательные, и не превышают 106.
Выходные данные
Единственная строка выходного файла TREES.SOL должна содержать одно целое число – минимальную для всех возможных разбиений сада длину самой длинной тропинки между деревьями в одной из частей сада.

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

TREES.DAT
3
1 5
1

TREES.SOL
1

Поможет кто-нить решить эту задачу?
Mazer
Здравствуйте. Помогите пожалуйста решить такую вот задачу:
При посадке на поверхность планеты Колонния, представляющей собой бесконечную плоскость с введенной на ней декартовой системой координат, десантник Шагаев оказался в точке (xd,yd). Вообще-то, ему хотелось бы оказаться в точке (xb,yb), где расположена база, поэтому он направился туда кратчайшим путем. Дело осложняется тем, что на поверхности планеты от прежней цивилизации остались N колонн прямоугольного сечения со сторонами, параллельными осям координат (которые, собственно, и вводились из этих соображений). Известны координаты двух противоположных вершин каждой из колонн: (xi1,yi1) и (xi2,yi2). Известно, что прямоугольники колонн имеют ненулевую площадь и что у каждой пары разных колонн нет общих точек. Конечно, Шагаев не может проходить сквозь колонны, но может двигаться вплотную к их вертикальным стенам. Начальная и конечная точка маршрута находятся вне этих колонн. Какое наименьшее расстояние должен пройти десантник, чтобы достигнуть цели?
Формат ввода: первая строка входного файла содержит числа xd, yd, xb, yb - координаты десантника и базы. Вторая строка содержит число n - кол-во колонн(0=<n=<40). Следующие n строк содержат описания колонн: в строке с номером i+2 содержаться координаты xi1, yi1,xi2, yi2. Все координаты являются целыми числами, по модулю не превосходящими 10000. Числа в строках разделяются пробелами.
Формат вывода: В первой строке выходного файла должно содержаться единственное вещественное число - длина кратчайшего пути с точностью до трех знаков после запятой.
Пример1:
input.txt output.txt
1 0 2 0 1.00000
0

Пример2:
input.txt output.txt
1 0 2 0 3.8284271
1
0 -1 1 1

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

Всем заранее спасибо, надеюсь на вашу помощь.
Xorian
Цитата(Lodar' @ 15.12.2007 20:46) *
Подсчитать число двоичных N-значных натуральных чисел (N<36). в каждом из которых нет трех единиц идущих подряд, а незначащие нули в записи чисел отсутствуют.
Ваша программа должна запросить значение N; найти и сообщить число N-значных двоичных чисел без трех единиц подряд.
Пример: Исходные данные: 4 Ответ: 6 (Имеются в виду числа 1000, 1001,1010, 1011, 1100, 1101)


Это задача на тему динамического программирования. Суть решения писать не буду, а код собственно вот:

var
a: array [1..35] of longint;
n, i: longint;
begin
readln (n);
a[1]:=1; a[2]:=2; a[3]:=3;
for i:=4 to n do a[i]:=a[i-3]+a[i-2]+a[i-1];
writeln (a[n]);
end.
АНГЕЛ
Пятый Белорецкий турнир по информатике
Покажите решение, пожалуйста
A. Почта
На станцию Белорецк прибыл почтовый поезд с письмами желающих участвовать в Белорецком турнире. Из достоверных источников начальник станции узнал, что в одном из вагонов во все конверты вложено по одному грамму суперзаразных микробов. К счастью, перед въездом на станцию из каждого вагона было взято некоторое число писем, и вся пачка взвешена на сверхточных весах. Выясните, можно ли по этим данным узнать, в каком вагоне находятся зараженные письма.
Входные данные:
В первой строке количество вагонов и масса выбранных писем, во второй – для каждого вагона по порядку указано количество выбранных из него писем.
Выходные данные:
Порядковый номер вагона с зараженными письмами или слово "IMPOSSIBLE", если выявить такой вагон невозможно.
Пример входных данных:
5 122
1 2 0 4 5
Пример выходных данных:
2
Технические ограничения: Любое чистое письмо весит 10 грамм, состав поезда не превышает 50 вагонов, в вагоне помещается не более 1000000 писем.

B. Контрольная.
Учитель провел контрольную работу. Ученики сидели за одним длинным столом. После контрольной ученики выходили из-за стола по одному, каждый раз выходил один из сидящих с краю, подходил к столу учителя и клал свою тетрадь сверху стопки или подсовывал ее вниз. Выясните, сколькими различными способами при этом могло получиться, что тетради легли в алфавитном порядке фамилий их владельцев.
Входные данные:
В первой строке количество учеников, в следующих строках – их фамилии в порядке следования за столом.
Выходные данные:
Найденное количество способов.
Пример входных данных:
3
ИВАНОВ
СИДОРОВ
ПЕТРОВ
Пример выходных данных:
3
Технические ограничения: В классе не более 50 российских учеников, среди которых нет однофамильцев.
Примечание: Способы считаются различными, если они различаются порядком складывания тетрадей (кто именно клал тетрадь i-м по счету).

C. Пары.
В клуб «Кому до 100» собрались одинаковое количество мужчин и женщин. Надо подобрать пару каждому мужчине так, чтобы сумма разниц в росте мужчины и женщины в паре была наименьшей. Вместимость клуба – 100 человек.
Входные данные:
В первой строке количество людей, во второй – список ростов мужчин, в третьей – список ростов женщин. Каждый рост не более 255 целых сантиметров.
Выходные данные:
Наименьшая сумма разниц в росте.
Пример входных данных:
6
180 150 205
150 180 100
Пример выходных данных:
105

D. Хакер.
Хакер Вася сконструировал аппарат, который может перепрограммировать телефонные пластиковые карточки, изменяя количество оставшихся минут разговора. Помогите Васе выяснить, какую наибольшую сумму времени разговора он может получить из имеющихся у него карточек.
Входные данные:
В первой строке список чисел (время в целых минутах) в порядке возрастания, которые аппарат может изменить, во второй строке – список чисел, в которые преобразуется соответствующее время из первой строки, в третьей – список минут разговора на имеющихся у Васи карточках.
Выходные данные:
Наибольшая сумма времени разговора.
Пример входных данных:
1 2 5
2 3 1
2 5
Пример выходных данных:
8
Технические ограничения: Емкость любой карточки – не более часа, для проведения испытаний аппарата Вася смог достать не более 100 карточек.

E. Телепортация.
Знайка изобрел космический корабль новейшего типа, который может только телепортироваться. Одна телепортация занимает 1 минуту и перемещает корабль ровно на P парсеков. Теперь коротышки во главе со Знайкой собираются слетать до Альфы Центавра, до которой R парсеков. Помогите Знайке рассчитать наименьшее время, за которое они смогут добраться до цели.
Входные данные:
В одной строке – натуральные числа P и R, не превосходящие 10000.
Выходные данные:
Наименьшее время в минутах.
Пример входных данных:
3 5
Пример выходных данных:
2
Lapp
Игра с калькулятором

В калькулятор вводится натуральное число К и нажимается клавиша "+". Калькулятор все еще показывает К. Цель игры: получить на экране число, состоящее из одинаковых цифр. Для ее достижения можно производить только одно действие - нажимать на клавишу "=" (возможно, 0 раз). После первого нажатия получается результат К+К, после очередного нажатия результат увеличивается на К. Требуется определить, удастся ли достичь цели, а если удастся, то какое число, состоящее из одинаковых цифр, будет получено первым. Количество отображаемых калькулятором цифр считать неограниченным, время работы батареек - тоже.
Ограничения: 1<=K<=999, время 1с.
Вводится одно число - К.
Вывести если цели достичь невозможно "No", если возможно, вывести два числа через пробел: цифру, из которой состоит искомое число, и количество цифр в числе.

Пример.
ввод№1
37
вывод№1
1 3

ввод№2
25
вывод
No

Решение: основано на алгоритме деления 'уголком' (Показать/Скрыть)


Решение №2 by klem4 (Показать/Скрыть)
Witaliy
Задание
Однажды Петрику поручили проверить надежность военного гарнизона. А именно надежность его инфраструктуры. Инфраструктура гарнизона - это система дорог, которые соединяют тайные объекты. Надежность гарнизона - это минимальное количество взрывчатки, необходимое для того, чтобы взорвав некоторые дороги, существовали два тайных объекта таких, что невозможно было бы добраться с одного объекта до другого используя только дороги.
Входные данные
Вам задана структура гарнизона - в первой строке N,m - к-сть тайных объектов и количество дорог соответственно, в следующих M строках описания дорог в виде f l c - объекты, которые соединяет дорога и количество взрывчатки, которая необходима для ее уничтожения, это количество взрывчатки для одной дороги не будет превышать 1000. Все дороги двусторонние. Количество объектов не превышает 50, а количество дорог 10000. В гарнизоне ни одна дорога не соединяет секретный объект сам с собой.
Выходные даны
Вам нужно вывести надежность данного гарнизона.
Пример введения 1

3 3

1 2 1

2 3 2

1 3 1

Пример выведения 1

2

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

<ссылка удалена>

Приветствуются все решения.
Lapp
Цитата(passat @ 17.03.2009 18:39) *
Вот тут много задач на любой вкус.

1. В этой теме публикуются задачи в явном виде и их решения.
2. Формат .doc запрещен, см. Правила.

Если хочешь обсудить эти задачи - создай другую тему. Если просто хочешь показать ссылку - пость в раздел Ссылки (например. в тему Сайты с олимпиадными задачами )
ZeroQ
"Проще простого"

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

Вход:файл input.txt, в котором записано единственное число N
Ограничения: 1<N≤30000
Выход: файл output.txt, содержащий единственное число (минимальное количество групп)
Пример:
input.txt 18
output.txt 3

Примечание к примеру: числа от 1 до 18 можно разбить на три группы с нужным свойством
(например, 1+3+4+5+6+18, 2+7+8+9+10+11+12+13+14+17 и 15+16 с суммами 103, 37 и 31), на меньшее число групп, как легко показать, нельзя.


Добавлено через 6 мин.
"Острова"
В океане расположен архипелаг из N островов, каждый из которых имеет форму выпуклого многоугольника. Острова не соприкасаются и не пересекаются. Эти острова необходимо соединить между собой мостами так, чтобы от любого острова архипелага можно было добраться до любого другого. Каждый мост должен соединять пару островов, при этом суммарная длина мостов должна быть минимальной.

Вход: файл input.txt, имеющий следующую структуру: в первой строке входного файла записано число N – количество островов в архипелаге. Далее идет N строк с описанием островов. В каждой строке описывается один остров, который задаётся числом вершин (первое число строки) и далее их координатами в порядке обхода по часовой стрелке (у каждой вершины первой идет абсцисса, а второй - ордината). Координаты внутри строки разделяются пробелами.
Ограничения: число N – натуральное от 2 до 50 (включительно), для каждого острова число вершин не превосходит 20, все координаты – целые числа, не превосходящие по модулю 30000.
Выход: файл output.txt, содержащий два числа (по одному в строке), первая строка ¬- число: количество мостов; второе строка - число: суммарная длина мостов с точностью до 0.001

Пример 1:
Входной файл input.txt содержит:
2
4 –2 –2 –2 2 2 2 2 –2
3 3 –2 3 2 6 0
Результат (файл output.txt):
1
1
Пример 2:
Входной файл input.txt содержит:
3
4 –2 –2 –2 2 2 2 2 –2
3 -3 0 –5 –1 –5 1
3 6 –5 8 –4 8 -5
Результат (файл output.txt):
2
6

Лисенок
Здравствуйте, у меня есть любопытная задача без решения. На первый взгляд кажется довольно легкой, но это только маскировка) Итак, задача про Боулинг. Выполняется только в Паскале.
Цель при игре в боулинг - сбить шаром максимальное количество кеглей. Партия в этой игре состоит из 10 туров. Задача игрока - сбить все 10 кеглей в каждом туре. Для этого игрок может совершить 2 броска шара, за исключением:
- если 10 кеглей сбиты первым броском, то второй бросок не совершается;
- если 10 кеглей сбиты первым броском в десятом туре, то игроку предоставляются два призовых броска, а если двумя бросками - один.
Количество очков в каждом туре равно количеству сбитых кеглей, кроме двух бросков, называемых "Strike" и "Spire".
Strike: игрок сбивает 10 кеглей первым броском, очки в этом туре начисляются из расчета: 10 + сумма очков за два предыдущих броска.
Spire: игрок сбивает 10 кеглей двумя бросками, очки в этом туре начисляются из расчета: 10 + сумма очков за один последующий бросок.
Результат партии складывается из результатов всех 10 туров.
Требуется написать программу, которая определит количество набранных игроком очков.

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

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

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

Выходной файл OUTPUT.TXT должен содержать одно целое число - количество набранных игроком очков.

Примеры

Код
№          INPUT.TXT                                                                       OUTPUT.TXT
1          12                                                                                    300
            10 10 10 10 10 10 10 10 10 10
2          15                                                                                    173  
            10 10 10 8 2 10 3 4 8 2 4 5 10 4 5

Личное мнение: я очень хочу решить эту задачу, но испытываю некоторые трудности, вы можете мне помочь с решением? wub.gif
Lapp
Лисенок, ты написала в тему, в которой не должно быть обсуждений (читай самый первый пост в ней). Пожалуйста, создай отдельную тему (содержание этого поста можешь скопировать) - там все обсудим и сделаем тип-топ. Ладно? Давай.
DarkWishmaster
Сообщество роботов:
Сообщество роботов живет по следующим законам: один раз в год они объединяются в полностью укомплектованные группы по 3 или 5 роботов, причем число групп из 3 роботов - максимально возможное. За год группа из 3 роботов собирает 5 новых собратьев, а группа из 5 - 9 новых собратьев. Каждый робот живет 3 года после сборки. Известно начальное количество роботов K (К>7), все они только что собраны. Определить сколько роботов будет
через N лет.

Input: Числа К и N (N,K≤32767) вводятся с клавиатуры.
Output: На экране выводится количество роботов через N лет.
Пример: Input: 11 2
Output: 80

Решение (Показать/Скрыть)


Добавлено через 5 мин.
Максимальная прибыль.
Для ускорения работы столовой, директор купил апарат, который успевает готовить любое меню за 1 час с минимальными затратами.
Столовая работает «nonstop» и принимает очень много заказов. Для каждого заказа существует лимит до которого нужно успеть приготовить заказ. Один заказ соответствует одному меню, а в столовой существует только один аппарат, который может приготовить за 1 час одно меню, поэтому помогите директору получить максимальную прибыль, используя аппарат для приготовления тех заказов, стоимость которых (прибыль) больше.

Input: Входной файл CANTINA.IN содержит в первой строке натуральное число n – которое соответствует числу заказов полученных за 1 день, а на следующих n строках – пары 2 чисел (час стоимость), разделенные пробелом, где: час это максимальное время до которого нужно успеть приготовить заказ, а стоимость это значимость этого заказа.

Output: На экран выводится натуральное число, что соответствует максимальной прибыли, которую можно получить при помощи купленного аппарата.
Пример:
CANTINA.IN
7
2 100
7 220
15 300
10 125
2 400
1 350
2 400
Ответ=1445
Решение (Показать/Скрыть)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.