#2173. Multiply and Rotate
Multiply and Rotate
Multiply and Rotate
题目描述
有一个正整数 。黑板上写着一个十进制的数。
当黑板上当前写着的数为 时,xax可以进行以下任意一种操作,改变黑板上的数:
- 擦掉 ,并将 乘以 的结果以十进制写在黑板上。
- 将 视为字符串,把末尾的数字移动到字符串的开头。
但只有当 且 不能被 整除时,才能进行此操作。
例如,当 时,xax可以进行以下任意一种操作:
- 擦掉 ,写上 。
- 将 视为字符串,把
123的末尾数字3移到开头。黑板上的数会从 变为 。
最开始,黑板上写着 。请问最少需要多少次操作,才能将黑板上的数变为 ?如果无论如何都无法将黑板上的数变为 ,请输出 。
输入格式
输入以如下格式从标准输入读入。
输出格式
请输出答案。
输入输出样例 #1
输入 #1
3 72
输出 #1
4
输入输出样例 #2
输入 #2
2 5
输出 #2
-1
输入输出样例 #3
输入 #3
2 611
输出 #3
12
输入输出样例 #4
输入 #4
2 767090
输出 #4
111
说明/提示
限制条件
- 输入均为整数。
样例解释 1
通过如下操作,可以在 次操作内将黑板上的数从 变为 :
- 执行第 种操作,黑板上的数变为 。
- 执行第 种操作,黑板上的数变为 。
- 执行第 种操作,黑板上的数变为 。
- 执行第 种操作,黑板上的数变为 。 无法在 次及以下操作内变为 ,因此答案为 。
样例解释 2
无论如何操作,都无法将黑板上的数变为 。
样例解释 3
通过合理选择操作,可以按如下顺序 $1 \to 2 \to 4 \to 8 \to 16 \to 32 \to 64 \to 46 \to 92 \to 29 \to 58 \to 116 \to 611$,共 次操作将黑板上的数变为 ,且这是最少次数。