Подразделы

Другие разделы

Дата и время

19/12/2024 17:35:37

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

printЗадачи очного тура личного первенства 1998

print1. Анаграмма в квадрате

Ограничения: время – 200ms/500ms, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Слово является анаграммой другого слова, если оно состоит из тех же самых букв в том же самом количестве, расположенных в другом порядке (например, слова sword и words). Анаграммами в квадрате будем называть два предложения, которые состоят из одинаковых слов или их анаграмм.
Словом будем называть последовательность прописных и строчных латинских букв (до 30 символов). Регистр букв игнорируется.
x-ray состоит из 2 слов X и RAY
Mary's состоит из 2 слов MARY и S
It's words состоит из 3 слов IT, S и WORDS
Прочие символы при определении анаграмм в квадрате игнорируется.
Входной файл содержит от 2 до 20 строк длиной до 80 символов, каждая из которых содержит одно предложение.
В выходной файл вывести все предложения, которые имеют анаграммы в квадрате, в том же порядке, в котором они содержатся во входном файле. Если таких предложений нет, вывести сообщение "NO ANAGRAM".

Пример ввода

No one post words.
Neo stops no word.
Sword stop on one!
Stop on neon words?

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

No one post words.
Sword stop on one!

print2. "Обходимые" числа

Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

`N`-значным обходимым числом будем называть целое число из `N` различных цифр от 1 до 9, которое можно обойти по следующим правилам. Обход начинается с левой цифры, эта цифра показывает, сколько мы должны отсчитать цифр слева направо до следующей цифры, которая будет использована для следующего отсчета, и так далее. При необходимости переходим с правого края числа на левый. Обход заканчивается, если пройдены все цифры по одному разу и мы дошли снова до самой левой цифры.
Например, таким числом является 81362. Стартуем с цифры 8, отсчитывая 8 цифр, доходим до 6 (при этом переходим с правого края числа на левый), отсчитывая 6 цифр, доходим до 2, затем до 1, 3, и наконец снова попадаем на 8.
Во входном файле находится от 1 до 10 строк с одним целым числом `R` в строке. Число `R` содержит от 2 до 7 цифр. Для каждого такого числа найти наименьшее обходимое число равное или большее `R`. Входные данные подобраны так, чтобы такое число существовало. Входной файл заканчивается строкой с 0.

Пример ввода

12
123
1234
81111
82222
83333
911111
7654321
0

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

13
147
1263
81236
83491
83491
913425
8124956
Источник: ACM North Central RC, 1996

print3. Космическая станция

Ограничения: время – 2s/4s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

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

                `N`
IMBALANCE = `∑` `|\ "МО"_i\ -\ "СМ"\ |`
               `i=1`

где `MО_i` – это масса `i`-го отделения, равная сумме масс образцов в `i`-ом отделении
`СM` – это средняя масса отделения и равна сумме масс всех образцов, деленной на число отделений (`N`).
Входной файл содержит несколько наборов данных. Первая строка каждого набора содержит два числа, разделенных пробелом. Первое число `N` (`1\ ≤\ N\ ≤\ 5`) определяет число отделений в центрифуге, а второе число `M` (`1\ ≤\ M\ ≤\ 2*N`) определяет число образцов. Вторая строка содержит `M` чисел (от 1 до 1000), разделенных пробелом, представляющие массы образцов. Ввод завершается строкой с двумя нулями.
В выходной файл для каждого набора вы должны напечатать строку с номером набора в формате "Set #`X`" где `X` – номер набора, нумерация начинается с 1. Следующие `N` строк содержат номер отделения в первой колонке, двоеточие во второй колонке и массы образцов, начиная с четвертой колонки, разделенных одним пробелом. Далее ваша программа должна напечатать значение IMBALANCE с точностью 5 знаков после запятой (т.е. десятичной точки). После результатов для каждого набора (в т.ч. и самого последнего) вывести пустую строку.

Пример ввода

2 3
6 3 8
3 5
51 19 27 14 33
5 9
1 2 3 5 7 11 13 17 19
0 0

Вывод для примера

Set #1
1: 3 6
2: 8
IMBALANCE 1.00000

Set #2
1: 14 33
2: 19 27
3: 51
IMBALANCE 6.00000

Set #3
1: 1 17
2: 2 13
3: 3 11
4: 5 7
5: 19
IMBALANCE 11.60000

print4. Пути-дороги

Ограничения: время – 2s/4s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (2)

"Путь" – это игра для двоих игроков, которая ведется на доске `N` на `N` клеток. Два игрока "Белый" и "Черный" пытаются проложить дорогу из квадратиков своего цвета от одного своего края доски до другого (противоположного) края.
Вы должны написать программу, анализирующую состояние доски и определяющую, кто выиграл в игре или кто может выиграть следующим ходом, помещая квадратик своего цвета в незанятую клетку. Ход Белого является следующим в рассматриваемой позиции.
Доска представляется матрицей букв W, B и U, где W – это белые квадратики, B – черные, а U – незанятые клетки. Белый игрок должен соединять левый и правый края доски, а Черный – верхний и нижний края.
Соседними считаются клетки, расположенные на доске рядом по горизонтали или вертикали. Внутренняя клетка доски имеет 4 соседей, клетка на углу – 2 соседей, клетка на краю – 3 соседей.
Путь – это последовательность различных клеток `L_0,\ L_1,\ …,\ L_k`, таких, что `L_i` и `L_{i+1}` являются соседними для всех `i` от 0 до `k-1`. Выигрышный путь для игрока – это такой путь `L_0,\ \ L_1,\ …,\ L_k,` заполненный квадратиками игрока, что `L_0` находится на одном краю игрока, а `L_k` на другом краю игрока. Выигрышный путь одного игрока блокирует проведение выигрышного пути для другого игрока.
Ввод
Входной файл содержит несколько наборов данных. Каждый набор начинается со строки, содержащей размер доски `N` (0<`N`≤64). Далее следует `N` строк по `N` символов (W, B, U). Входной файл заканчивается строкой, содержащей 0.
Вывод
В выходной файл для каждого набора данных вы должны вывести одну из пяти строк:
  • Белый выиграл.
  • Черный выиграл.
  • Белый может выиграть следующим ходом.
    (помещая квадратик белого цвета в незанятую клетку)
  • Черный может выиграть следующим ходом.
    (если Белый не может выиграть следующим ходом, а Черный может при неправильном ходе Белого)
  • Нет выигрыша.
    (во всех остальных случаях)

Пример ввода

7
WBBUUUU
WWBUWWW
UWBBBWB
BWBBWWB
BWWBWBB
UBWWWBU
UWBBBWW
3
WBB
WWU
WBB
0

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

Белый выиграл.
Белый может выиграть следующим ходом.
NB! Во фразах не допустимы никакие искажения и смена регистра.
При выводе можно использовать кодировку символов 1251 (windows) или 866 (dos).
Источник: ACM Pacific NW RC, 1997

print5. What Day Is It?

Ограничения: время – 200ms/500ms, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

The calendar now in use evolved from the Romans. Julius Caesar codified a calendar system that came to be known as the Julian calendar. In this system, all months have 31 days, except for April, June, September, and November, which have 30 days, and February, which has 28 days in non-leap years, and 29 days in leap years. Also, in this system, leap years happened every four years. That is because the astronomers of ancient Rome computed the year to be 365.25 days long, so that after every four years, one needed to add an extra day to keep the calendar on track with the seasons. To do this, they added an extra day (February 29) to every year that was a multiple of four.
Julian Rule: Every year that is a multiple of 4 is a leap year, i.e. has an extra day (February 29).
In 1582, Pope Gregory's astronomers noticed that the year was not 365.25 days long, but closer to 365.2425. Therefore, the leap year rule would be revised to the following:
Gregorian Rule: Every year that is a multiple of 4 is a leap year, unless it is a multiple of 100 that is not a multiple of 400.
To compensate for how the seasons had shifted against the calendar up until that time, the calendar was actually shifted 10 days: the day following October 4, 1582 was declared to be October 15.
England and its empire (including the United States) didn't switch to the Gregorian calendar system until 1752, when the day following September 2 was declared to be September 14. (The delay was caused by the poor relationship between Henry VIII and the Pope.)
Write a program that converts dates in the United States using a calendar of the time and outputs weekdays. The input will be a series of positive integers greater than zero, three integers per line, which represent dates, one date per line. The format for a date is "month day year" where month is a number between 1 (which indicates January) and 12 (which indicates December), day is a number between 1 and 31, and year is positive number. The output will be the input date and name of the weekday on which the given date falls in the format shown in the sample. An invalid date or nonexistent date for the calendar used in the United States at the time should generate an error message indicating a invalid date. The input will end with three zeroes.

Sample Input

11 15 1997
1 1 2000
7 4 1998
2 11 1732
9 2 1752
9 14 1752
4 33 1997
0 0 0

Sample Output

Saturday
Saturday
Saturday
Friday
Wednesday
Thursday
Invalid date
Days of week is Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday.
Source: ACM Pacific NW RC, 1997
loading