介绍
在这个挑战中,我们将处理某个无限的无向图,我将其称为高除数图。其节点是从2开始有两个节点之间的边缘的整数A <B ,如果一个分割b和一个2 ≥b 。由2到18范围组成的子图如下所示:
16-8 12 18
\|/ |/|
4 6 9 10 15 14
| |/ |/ |
2 3 5 7 11 13 17
可以证明无限高的除数图是连通的,因此我们可以询问两个节点之间的最短路径。
输入输出
您的输入是两个整数a和b。您可以假定2≤a≤b <1000。您的输出是无限高除数图中a和b之间的最短路径的长度。这意味着路径中的边数。
您可能会发现以下事实很有用:始终存在从a到b的最佳路径,该路径先增大然后减小,并且仅访问严格小于2b 2的节点。特别地,由于b <1000,您只需要考虑小于2000000的节点。
例子
考虑输入3
和32
。节点3和32之间的一条可能路径是
3 -- 6 -- 12 -- 96 -- 32
该路径有四个边,结果没有较短的路径,因此正确的输出是4
。
作为另一示例,用于最佳路径2
和25
是
2 -- 4 -- 8 -- 40 -- 200 -- 25
因此正确的输出是5
。在这种情况下,没有最佳路径包含node 50 = lcm(2, 25)
。
规则和计分
您可以编写完整的程序或函数。最低字节数获胜,并且不允许出现标准漏洞。没有时间或内存限制,因此允许强行使用。
测试用例
2 2 -> 0
2 3 -> 4
2 4 -> 1
2 5 -> 5
3 5 -> 4
6 8 -> 2
8 16 -> 1
12 16 -> 2
16 16 -> 0
2 25 -> 5
3 32 -> 4
2 256 -> 3
60 77 -> 3
56 155 -> 3
339 540 -> 2
6 966 -> 4
7 966 -> 2
11 966 -> 4
2 997 -> 7
991 997 -> 4
FindShortestPath
违反了有关标准漏洞的约束?如果是这样,请告诉我,我将删除提交的内容。