题目背景
上白泽慧音在给雾之湖的妖精们讲课。
某天,慧音在上数学课时,提到了一种非常有趣的记号:高德纳箭号表示法。它可以用来描述非常巨大的数字。比如紫的年龄。
对于非负整数 a,b 和正整数 n,高德纳箭号表示法的定义为:
a↑nb=⎩⎨⎧1 (b=0)ab (n=1 and b>0)a↑n−1(a↑n(b−1)) (n>1 and b>0)一些简单的例子:
注:
-
a↑b 与 a↑1b 相同;
-
a↑↑b 与 a↑2b 相同;
-
请注意幂运算的顺序。
题目描述
慧音希望琪露诺解决以下关于 x 的方程:
a↑nx≡b(modp)
其中,a,n,b,p 为已知的常数,x 为未知数。
琪露诺被高德纳箭号表示法搞得云里雾里的,但是她不想被头槌。你能帮帮她吗?
输入格式
本题有多组测试数据。
第一行,一个整数 T,表示数据组数。
对于每组数据:
一行,四个整数 a,n,b,p。
输出格式
对于每组数据,输出一行,一个整数,如果原方程有解,输出该方程的最小非负整数解;否则,输出 −1。
提示
本题开启捆绑测试。
Subtask |
n |
p |
T |
分值 |
时限 |
1 |
n=1 |
2≤p≤109 且 p 为质数 |
1≤T≤100 |
15pts |
2.00s |
2 |
n=2 |
无特殊限制 |
1≤T≤5×103 |
25pts |
1.00s |
3 |
n=3 |
无特殊限制 |
60pts |
2.00s |
对于 100% 的数据,1≤a≤109,1≤n≤3,0≤b<p≤109,1≤T≤2×104。