#P1034. C.变(turn.cpp)

C.变(turn.cpp)

题目描述

22 以上(包括 22nn 以下(包括 nn)的正整数 xx 可以进行以下操作:

  • 如果 x+1nx+1 \le nx+1x+1 可变为新的 xx
  • 如果 x\sqrt{x} 为整数,x\sqrt{x} 可变为新的 xx

例如 x=2x=2 时,新的 xx 可以为 33x=4x=4 时,新的 xx 可以为 (2,5)(2, 5) 中的任意一个。

kagamiz 想知道从 x=2x=2 开始,将所有允许的操作都执行至少一遍,使 xx 的值再次为 22 的方法中,操作次数最少的方法的操作次数。

你的任务就是判断这样的方法是否存在。如果存在,则输出最小操作次数。

输入格式

输入 11 行,11 个整数 nn

输出格式

输出 11 行最小操作次数。当不存在符合条件的方法时输出 -1

样例 #1

样例输入 #1

9

样例输出 #1

10

样例 #2

样例输入 #2

5

样例输出 #2

-1

样例 #3

样例输入 #3

1000000

样例输出 #3

333333999

提示

样例 1 说明

所有允许的操作共有 99 个,如下:

232\to 3

343\to 4

454\to 5

565\to 6

676\to 7

787\to 8

898\to 9

424\to 2

939\to 3

将以上操作都至少执行一遍,使得 x=2x = 2 时的最小操作次数为 1010,操作过程依次如下:

232\to 3

343\to 4

454\to 5

565\to 6

676\to 7

787\to 8

898\to 9

939 \to 3

34 3 \to 4

42 4\to 2

数据范围

对于 50%50\% 的数据,2n3×1032\le n\le 3\times 10^3

对于 100%100\% 的数据,2n3×10122 \le n \le 3\times 10^{12} (任意时刻 都不能超过的上限值)。