小塔最近正在学习魔法,通过魔法可以改变纸上的数字。
小塔一共会两种魔法,第一种魔法可以将纸上数字变为它的a倍,比如在a=3时,他可以将666变成1998;第二种魔法可以让纸上的数字循环右移一次,比如12345在施加第二种魔法后会变成51234,119会变911,需要注意的是,小塔无法对小于10或是以0为结尾的数施加第二种魔法。
这是一个典型的最短路径问题,可以使用广度优先搜索(BFS来解决。每个状态代表当前的数字,通过应用两种魔法可以到达下一个状态。我们需要找到从 1 到 b 的最短路径(由于状态只有1000000种)。也可以考虑记忆化搜索来做这一道题
1.初始化: 使用一个队列来进行 BFS,初始状态为 1,步数为 0。 使用一个数组 visited 来记录每个数字被访问的最少步数,初始时所有值为 -1(未访问)。
2.BFS 过程: