eolymp
bolt
Try our new interface for solving problems
Məsələlər

Шестиугольные пути

Шестиугольные пути

Поиск кратчайшего маршрута является типичной задачей для водителя грузовика. Если грузовик движется по кратчайшему пути, это экономит деньги. Кроме того, важно знать альтернативные маршруты той же длины, в случае если основной маршрут недоступен, например, из-за некоторых дорожных работ. Для описания области необходимо промоделировать ее карту. В ACM недавно обнаружили, что треугольные и прямоугольные модели областей являются недостаточными, поэтому решили использовать шестиугольники для описания карт. Клетки правильной шестиугольной сетки (например, сот) можно нумеровать, начиная с \textbf{1} (в любой клетке) и двигаться по спирали к другим клеткам. Таким образом, каждая ячейка однозначно идентифицируется своим номером. И наоборот, каждое положительное целое число определяет одну ячейку. \includegraphics{https://static.e-olymp.com/content/0e/0e40fe2fd2d13ac05cf7f4fcfc4a4dda00f29b7c.jpg} Две клетки называются соседними, если они имеют одну общую сторону. В бесконечной структуре каждая ячейка имеет ровно шесть соседей. Например, ячейка номер \textbf{2} соседствует с \textbf{1}, \textbf{3}, \textbf{7}, \textbf{8}, \textbf{9} и \textbf{10}. \textit{Шестиугольный путь} - это непустая последовательность ячеек, в которой каждая из них (кроме последней) является соседней с последующей. Шестиугольный путь между двумя ячейками \textbf{X} и \textbf{Y} - это путь, в котором \textbf{X} - первая ячейка последовательности, а \textbf{Y} - последняя. \textit{Длиной} пути называется количество ячеек в нем минус один. Длина пути представляет собой количество шагов, необходимых для прохождения всего маршрута. Вам следует найти длину кратчайшего маршрута между двумя клетками, а также общее количество взаимно различных маршрутов такой же длины. Различные маршруты должны различаться по крайней мере в одном члене последовательности, т.е. они не должны формировать полностью непересекающихся последовательности. \InputFile Входные данные состоят из нескольких тестов, каждый из которых расположен на отдельной строке. Строка содержит два целых числа \textbf{X} и \textbf{Y} (\textbf{1} ≤ \textbf{X}, \textbf{Y} ≤ \textbf{1000000}, \textbf{X} ≠ \textbf{Y}), разделенных пробелом. Числа задают две различные ячейки. За последним тестом следует строка из двух нулей, которая обозначает конец входных данных. \OutputFile Для каждого теста вывести предложение "\textbf{There are N routes of the shortest length L.}". Замените \textbf{L} наименьшей длиной пути между ячейками \textbf{X} и \textbf{Y}. Замените \textbf{N} количеством различных путей той же самой длины. Если существует только один путь, то используйте слова "\textbf{is}" и "\textbf{route}" вместо "\textbf{are}" и "\textbf{routes}".
Zaman məhdudiyyəti 2 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
1 2
0 0
Çıxış verilənləri #1
There is 1 route of the shortest length 1.
Mənbə Czech Technical University Open 2003