题目描述
小威在数电课上学到了状态转换图,比如下面这张:

现在,他遇到了一个同步时序电路分析的问题,其状态转换图有一定的特点:
假设总共有 n 个节点,分别为 S0,S1,...,Sn−1。
当时钟信号下一个脉冲为"高(1)"时,节点 Sx 转移到节点 S(x∗a+c)modn;
当时钟信号下一个脉冲为"低(0)"时,节点 Sx 转移到节点 S(x∗b+d)modn。
而在本题中,时钟信号的脉冲序列为 101010....
现在小威想知道,对于给定的 n,a,b,c,d,是否存在一个时钟周期 T,使得从任意节点 Sx 任意时刻(即初始脉冲可能为 0,也可能为 1)出发都能在 T 个脉冲之后回到初始状态(状态包括节点和脉冲两个方面,两状态相同当且仅当节点和脉冲都相同),存在则输出最小的时钟周期 Tmin ,否则输出 inf
。
输入格式
第 1 行一个整数 T 代表数据组数。
第 2 行到第 T+1 行每行五个整数 n,a,b,c,d,含义如上所述。
对于所有数据,满足:
- 1≤T≤1000;
- 2≤n≤109;
- 0<a,b<n;
- 0≤c,d<n。
输出格式
T 行,每行一个正整数或字符串表示答案,含义如上所述。
提示
样例 #1 解释如下:
对于第一组数据,节点的状态转换序列可以拆分如下(括号中的是脉冲高/低):
S0(1)→S3(0)→S2(1)→S2(0)→S1(1)→S0(0)→S4(1)→S1(0)(→S0(1)),8 个时刻一循环;
S3(1)→S4(0)(→S3(1)),2 个时刻一循环;
取两个循环周期的最小公倍数 8 即是答案。
对于第二组数据,从 S0 出发,从 0 脉冲对应时刻开始转移,无论如何也无法回到起始状态(除初始时刻外,不存在同时让节点等于 S0,脉冲为 0 的时刻)。