При расследовании дорожно-транспортных происшествий часто возникают проблемы с розыском автомобилей, водители которых покинули место происшествия.
Получение свидетельских показаний – непростая работа. Ситуация осложняется тем, что очень часто свидетели могут только приблизительно вспомнить номер автомобиля. При этом с большой вероятностью опрашиваемый может перепутать порядок цифр или букв в номере.
По полученному от свидетеля происшествия номеру, подсчитайте, сколько различных номеров может получиться из него перестановкой букв и/или цифр, а также выведите все такие номера.
Напомним, что автомобильные номера в России состоят из трех букв и трех цифр, упорядоченных следующим образом: буква, три цифры, затем две буквы. Фрагмент номера, который идентифицирует регион, в котором зарегистрирован автомобиль, мы будем игнорировать.
В номере могут использоваться следующие буквы: «A», «B», «C», «E», «H», «K», «M», «O», «P», «T», «X», «Y» (эти буквы имеют схожие по написанию аналоги как в русском, так и в латинском алфавите). В этой задаче во входных данных будут использоваться буквы латинского алфавита.
На вход программы поступает одна строка, которая представляет собой корректный автомобильный номер.
В первой строке выведите число k – количество номеров, которые могут получиться из заданного перестановкой букв и/или цифр.
В последующих k строках выведите все такие номера в произвольном порядке.
X772KX
9 X277XK X277KX X727XK X727KX X772XK X772KX K277XX K727XX K772XX
Перед началом тараканьих бегов всем болельщикам было предложено сделать по две ставки на результаты бегов. Каждая ставка имеет вид "Таракан №A придет раньше, чем таракан №B".
Организаторы бегов решили выяснить, могут ли тараканы прийти в таком порядке, чтобы у каждого болельщика сыграла ровно одна ставка из двух (то есть чтобы ровно одно из двух утверждений каждого болельщика оказалось верным). Считается, что никакие два таракана не могут прийти к финишу одновременно.
В первой строке входных данных содержатся два разделенных пробелом натуральных числа: число K, не превосходящее 10, - количество тараканов и число N, не превосходящее 100, - количество болельщиков. Все тараканы пронумерованы числами от 1 до K. Каждая из следующих N строк содержит 4 натуральных числа A, B, C, D, не превосходящих K, разделенных пробелами. Они соответствуют ставкам болельщика "Таракан №A придет раньше, чем таракан №B" и "Таракан №C придет раньше, чем таракан №D".
Если завершить бега так, чтобы у каждого из болельщиков сыграла ровно одна из двух ставок, можно, то следует вывести номера тараканов в том порядке, в котором они окажутся в итоговой таблице результатов (сначала номер таракана, пришедшего первым, затем номер таракана, пришедшего вторым и т. д.) в одну строку через пробел. Если таких вариантов несколько, выведите любой из них.
Если требуемого результата добиться нельзя, выведите одно число 0.
Пример
Входные данные | Выходные данные |
3 2 2 1 2 3 1 2 3 2 |
3 2 1 |
3 4 1 2 1 3 1 2 3 1 1 2 2 3 1 2 3 2 |
0 |
Дана строка, состоящая из \(M\) попарно различных символов. Вывести все перестановки символов данной строки.
В первой строке файла находится исходная строка. 2 <= \(M\) <= 8, символы - буквы латинского алфавита и цифры.
Вывести в каждой строке файла по одной перестановке. Перестановки можно выводить в любом порядке. Повторений и строк, не являющихся перестановками исходной, быть не должно.
AB
AB BA
0Az
0Az 0zA A0z Az0 z0A zA0
Дана строка, состоящая из \(M\) символов. Вывести все перестановки символов данной строки.
В первой строке файла находится исходная строка. 2 <= \(M\) <= 8, символы - буквы латинского алфавита и цифры.
Вывести в каждой строке файла по одной перестановке. Перестановки можно выводить в любом порядке. Повторений и строк, не являющихся перестановками исходной, быть не должно.
0z
0z z0
Совсем недавно появилась в продаже новая компьютерная игра «Морской бой—3». Вася купил себе эту игру и теперь играет в нее в свободное от занятий время. Особенно ему нравится в одной из миссий управлять самолетом. Изначально самолет находится на палубе неподвижного авианосца и готов в любой момент к взлету. Задача игрока в этой миссии состоит в уничтожении \(N\) кораблей противника. После уничтожения всех кораблей самолет должен вернуться обратно на авианосец.
Для простоты будем считать плоской поверхность моря, где располагается авианосец. Введем прямоугольную декартову систему координат и разместим авианосец в начале координат. Каждый из кораблей в начальный момент игры находится в некоторой точке (\(x\), \(y\)), и сразу после начала игры движется равномерно и прямолинейно так, что его вектор скорости равен (\(V_x\), \(V_y\)).
Конструктивные особенности самолета таковы, что он может двигаться с любой скоростью, не превосходящей \(U\). Для того, чтобы сбросить бомбу, которая была специально придумана для этой игры, самолету необходимо находиться непосредственно над кораблем. Корабли считаются точками, т.е. размером кораблей можно пренебречь. Считается также, что самолет может мгновенно взлететь с палубы авианосца, и время падения бомбы на цель равно нулю.
Требуется написать программу, определяющую минимальное время, за которое игрок сможет уничтожить все корабли и возвратить самолет обратно на авианосец.
Первая строка входного файла содержит число \(N\), определяющее количество кораблей (1 \(\le\) \(N\) \(\le\) 9). Вторая строка входного файла содержит целое число \(U\) (1 \(\le\) \(U\) \(\le\) 10000), задающее скорость самолета в метрах в секунду. Последующие \(N\) строк описывают все корабли. Каждая строка содержит четыре целых числа \(x\), \(y\), \(V_x\), \(V_y\), не превосходящих 10000 по модулю и определяющих начальные координаты и скорость корабля, соответственно. Координаты кораблей заданы в метрах, скорости — в метрах в секунду.
Гарантируется, что самолет летит быстрее, чем плывет любой из кораблей.
В первой строке выходного файла выведите минимальное время, требуемое на выполнение миссии. Требуемая точность — не менее \(10^{−3}\).
1 1000 10 10 0 0
0.0282842712474619