#P1792. Hexagonal Routes

Hexagonal Routes

本题没有可用的提交语言。

描述

寻找最短路径是卡车司机的典型任务。如果卡车通过最短路径行驶,就能节省费用。了解相同长度的替代路径也很重要,以防某条路径无法通行,例如由于道路施工。

为了描述一个区域,我们需要建立其地图模型。ACM最近发现基于三角形和矩形的模型不足,决定使用六边形来描述地图。给定一个规则的六边形网格(类似于蜂巢),我们可以从任意一个单元格开始编号为1,然后以螺旋方式依次为其他单元格编号。这样,每个单元格都有唯一的编号,反之,每个正整数也对应一个唯一的单元格。

如果两个单元格共享一条边,则称它们为相邻。在无限结构中,每个单元格恰好有六个邻居。例如,编号为2的单元格与单元格1、3、7、8、9和10相邻。六边形路径是指一个非空的单元格序列,其中序列中的每个单元格(除了最后一个)与其后继单元格相邻。两个单元格XXYY之间的六边形路径是指以XX为序列第一个成员、YY为最后一个成员的六边形路径。路径的长度是序列中单元格数减一,表示我们沿该路径行走所需的步数。
你的任务是确定两个单元格之间最短路径的长度,以及该长度的所有不同路径的总数。不同的路径必须在至少一个序列成员上有所不同,即它们不需要是完全不重叠的序列。

输入

输入由一系列任务组成,每个任务单独占一行。每行包含两个整数XXYY,用空格分隔,1X,Y1,000,0001 \leq X, Y \leq 1,000,000,且XYX \neq Y。这些数字表示两个不同的单元格。最后一个任务后跟着一行两个零,表示输入结束。

输出

对于每个任务,输出句子“There are N routes of the shortest length L.”。将LL替换为XXYY之间最短路径的最小可能长度,将NN替换为该长度的不同路径数量。如果只有一条路径,则使用“is”和“route”代替“are”和“routes”。

示例输入


1 2  

1 7  

1 8  

1 19  

7 12  

1000 9000  

0 0  

示例输出


There is 1 route of the shortest length 1.  

There is 1 route of the shortest length 1.  

There are 2 routes of the shortest length 2.  

There is 1 route of the shortest length 2.  

There are 3 routes of the shortest length 3.  

There are 278940769844931007968 routes of the shortest length 73.  

来源

CTU Open 2003