Problem B: 换位置游戏
Memory Limit:256 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:14
Solved:4
Description
N 个小朋友(编号为 1 到 N) 正在玩一个换位置游戏。 从左到右依次排列着 N 个凳子(编号为 1 到 N,最左边的为 1 号凳子,最右边的为 N 号凳子),每个凳子上都有一个数字(凳脚处红色数字), 每个数字互不相同,且都是不超过 N 的正整数。
游戏开始前, 1 号小朋友坐在 1 号凳子上, 2 号小朋友坐在 2 号凳子上,然后依次下去,N 号小朋友坐在 N 号凳子上。比如当 N=4 时,游戏开始前小朋友们坐凳子的状态如下图 1所示:
【输入数据】
输入文件 move.in:输入从文件中读取,输入共 2 行。
第 1 行是一个整数 N(1≤N≤1000),表示参加游戏的小朋友人数, 当然也表示凳子的数目。
第 2 行 N 个互不相同的正整数 Ki(1≤Ki≤N,且 1≤i≤N), Ki 表示第 i 把凳子凳脚处的数字。
【输出数据】
输出文件 move.out:结果输出到文件中, 输出共 1 行。
表示小朋友们通过换位置后回到游戏开始前坐凳子的状态最少需要经过多少轮。测试数据保证输出的结果不超出 20000000。
游戏开始前, 1 号小朋友坐在 1 号凳子上, 2 号小朋友坐在 2 号凳子上,然后依次下去,N 号小朋友坐在 N 号凳子上。比如当 N=4 时,游戏开始前小朋友们坐凳子的状态如下图 1所示:
图 1 游戏开始前 4 位小朋友坐凳子的状态
坐定后,游戏开始。 每位小朋友看一下自己坐的凳子凳脚处的数字,然后根据这个数字找到相应号码的凳子。比如上面的例子, 1 号小朋友凳脚处数字是 3,所以他到 3 号凳子上坐下, 2 号小朋友凳脚处数字是 1,所以他到 1 号凳子坐下, 3 号小朋友凳脚处数字是 2,所以他到 2 号凳子坐下, 4 号小朋友凳脚处数字是 4,所以他到 4 号凳子坐下。 经过一轮换位置以后, 4 个小朋友坐凳子的状态如下图 2 所示:
图 2 经过第 1 轮换位置后小朋友们坐凳子的状态
坐定后,每位小朋友再看一下自己凳脚的数字,按照凳脚的数字再继续换位置,第二轮换位置的结果如下图 3 所示
图 3 经过第 2 轮换位置后小朋友们坐凳子的状态
坐定后,每位小朋友再看一下自己凳脚的数字,按照凳脚的数字再继续换位置,第三轮换位置的结果如下图 4 所示:
图 4 经过第 3 轮换位置后小朋友们坐凳子的状态
当第三轮换位置结束后,发现每位小朋友又各自坐到了游戏开始前的位置上,此时游戏结束。从上面的过程我们可以发现,从游戏开始经过 3 轮换位置后又回到了游戏开始前坐凳子的状态,但当 N 很大的时候,这个换位置过程非常复杂,请编程帮忙计算一下最少需要经过多少轮换位置才能回到游戏开始前坐凳子的状态。【输入数据】
输入文件 move.in:输入从文件中读取,输入共 2 行。
第 1 行是一个整数 N(1≤N≤1000),表示参加游戏的小朋友人数, 当然也表示凳子的数目。
第 2 行 N 个互不相同的正整数 Ki(1≤Ki≤N,且 1≤i≤N), Ki 表示第 i 把凳子凳脚处的数字。
【输出数据】
输出文件 move.out:结果输出到文件中, 输出共 1 行。
表示小朋友们通过换位置后回到游戏开始前坐凳子的状态最少需要经过多少轮。测试数据保证输出的结果不超出 20000000。
Sample Input Copy
Sample Output Copy