AT_pakencamp_2022_day1_n Paken Machine
题目描述
首先给定一个整数 $T$。请你针对 $T$ 组测试数据解决以下问题。
> hiikunZ 君收到了一台作为生日礼物的パ研マシン。
>
> パ研マシン配备有一个显示屏、一盏灯和一个按钮,各有一个。
>
> 开始时,显示屏上显示整数 $s$,灯亮为红色。
>
> 每当 hiikunZ 君按下按钮一次,显示屏上的整数 $x$ 与灯的颜色将按如下规则发生变化。
>
> - 若按钮按下前灯为红色,则 $x$ 变为 $A_r \times x + B_r$ 对素数 $P$ 取模的结果,且灯变为蓝色。
> - 若按钮按下前灯为蓝色,则 $x$ 变为 $A_b \times x + B_b$ 对素数 $P$ 取模的结果,且灯变为黄色。
> - 若按钮按下前灯为黄色,则 $x$ 变为 $A_y \times x + B_y$ 对素数 $P$ 取模的结果,且灯变回红色。
>
> hiikunZ 君希望通过按按钮若干次(可为 $0$ 次),将显示屏上的整数变为 $t$。
>
> 请判断是否可能实现,若可能,请输出实现所需按钮最少的按下次数。
输入格式
输入第一行为整数 $T$,表示测试数据组数。
随后 $T$ 行,每行描述一组测试数据,格式如下:
$s\ t\ P\ A_r\ B_r\ A_b\ B_b\ A_y\ B_y$
含义分别为:初始显示整数 $s$,目标整数 $t$,模数素数 $P$,红、蓝、黄灯对应的 $A$ 与 $B$ 参数。
输出格式
请按顺序输出 $T$ 行答案。
对于第 $i$ 组测试数据,若能将显示屏上的整数变为 $t$,输出所需最少按钮按下次数;否则输出 $-1$。
说明/提示
### 样例解释 1
以第 $1$ 组样例为例:
每次按钮与显示内容及灯变化如下:
- 初始:灯为红色,显示整数 $1$。
- 第 $1$ 次按下:$1 \times 1 + 2 = 3$,对 $13$ 取模得 $3$,灯变为蓝色。
- 第 $2$ 次按下:$3 \times 3 + 4 = 13$,对 $13$ 取模得 $0$,灯变为黄色。
- 第 $3$ 次按下:$5 \times 0 + 6 = 6$,对 $13$ 取模得 $6$,灯变为红色。
- 第 $4$ 次按下:$1 \times 6 + 2 = 8$,对 $13$ 取模得 $8$,灯变为蓝色。
因此,按 $4$ 次按钮可将显示数变为 $8$。
第 $2$ 组样例中,无论如何操作,显示内容都将停留在 $0$,无法变为 $1$。
### 数据范围
- $1 \leq T \leq 10$
- $2 \leq P \leq 10^9$
- $P$ 为素数
- $0 \leq A_r, A_b, A_y < P$
- $0 \leq B_r, B_b, B_y < P$
- $0 \leq s, t < P$
- 所有输入均为整数
由 ChatGPT 5 翻译