松鼠吃果子

题目描述:

狐狸尼克刚把冰激凌甜筒卖完,正得意的哼着小曲数着钞票,突然一只松鼠从他面前一闪而过。尼克赶紧把钞票藏好,正想追时,发现那只松鼠早已不见了踪影……

当尼克走过一条街时,发现那只松鼠正在树上吃果子。树上共有 N 个果子,由下向上串排成一列,并标号 1, 2, ⋯, N。小松鼠从最下面的果子上开始向上跳,并且第 i 次跳跃时,可以一次跳过 i × i × i mod 5 的余数 + 1 个果子( 即 i × i × i % 5 + 1 ),并把当前脚下的一个果子吃了。如果上面有果子,在重力的作用下,都将向下掉下一格。例如:第 1 次跳从 1 号果子上跳过 1 × 1×1 % 5 + 1 = 2 个果子,可跳到 3 号果子上,并把 3 号果子吃了;第 2 次从 4 号果子上( 落在原来第 3 个果子的位置 ) 跳过 2 × 2 × 2 % 5 + 1 = 4 个果子,可以跳到 8 号果子上,并把 8 号果子吃了;如此下去……。

当然,总有一次松鼠会跳出这串果子的最上面,设为第 K 次,它吃不到任何果子了。这时它回到最下面的果子上,重做它的第 K 次跳,以求吃到果子。

狐狸尼克看的很是投入,尼克很想知道松鼠吃的第 M 个果子的标号( 即第 M 跳吃到的果子标号 )。 

输入格式:

输入共两行,第一行为整数 N,第二行为整数 M,意义如题目所述。

输出格式:

输出共一行一个整数,即松鼠吃的第 M 个果子的标号。数据保证一定有解。

数据范围:

对于100%的数据:1 ≤ M ≤ N ≤ 1,000。

测试点编号 M,N
1~2   M≤N≤20
3~6  M≤N≤100
7~10 没有额外限制 

样例输入:

10
4

样例输出:

9

提示:

【样例说明】松鼠吃掉的果子标号依次为3, 8, 5 ( 回到下面重做第 3 跳 ),9 ( 回到下面重做第 4 跳 )。

时间限制: 1000ms
空间限制: 256MB

来源: 温州市计算机学会2023比赛