[R73E]跳跳棋 - 代码源竞赛平台

时空限制

2S/512M

题目描述

一个圆形刻度盘上有 mm 个位置,依次编号为 0,1,…,m−10,1,\ldots,m-1。刻度盘上放有两枚不同的棋子 A,BA,B,初始时分别位于不同的位置 a,ba,b。

一次操作中,你可以选择其中一枚棋子,以另一枚棋子为中心,将它移动到关于另一枚棋子对称的位置。具体地:

  • 若选择棋子 AA,则令 a:=(2b−a) mod ma:=(2b-a)\bmod m;
  • 若选择棋子 BB,则令 b:=(2a−b) mod mb:=(2a-b)\bmod m。

其中,x mod mx\bmod m 表示与 xx 模 mm 同余且位于 [0,m−1][0,m-1] 内的唯一整数。

你可以进行任意次操作。求交换两枚棋子位置所需的最少操作次数,即使棋子 AA 最终位于初始位置 bb,且棋子 BB 最终位于初始位置 aa。若无法完成交换,输出 −1-1。

格式

输入格式

本题有多组测试数据。

第一行包含一个正整数 TT,表示测试数据的组数。

接下来 TT 行,每行包含三个整数 m,a,bm,a,b,表示刻度盘的位置数以及两枚棋子的初始位置。

输出格式

对于每组测试数据,输出一行一个整数,表示交换两枚棋子位置所需的最少操作次数。若无法完成交换,输出 −1-1。

样例

样例输入 #1

5
6 0 2
10 1 3
8 1 5
9 2 5
7 0 1

样例输出 #1

3
5
-1
3
7

样例解释 #1

对于第一组测试数据,一种最优操作过程为

(0,2)→(4,2)→(4,0)→(2,0)。(0,2)\to(4,2)\to(4,0)\to(2,0)。

因此最少需要进行 33 次操作。

数据规模

注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。

子任务编号 分数 T≤T\le m≤m\le 特殊性质
11 3030 1010 100100 无
22 10510^5
33 2020 10510^5 10910^9 特殊性质 A
44 无

特殊性质 A:mm 为质数。

对于 100%100\% 的数据,满足 1≤T≤1051\le T\le 10^5,2≤m≤1092\le m\le 10^{9},0≤a,b<m0\le a,b<m,且 a≠ba\ne b。