Ambition 出去买饮料了!擅长光速机惨的 nkxjlym 显然不会错过这次机会,他决定进行他的机惨计划,用字符 a 填满 Ambition 电脑里的记事本!
nkxjlym 打开了 Ambition 电脑里的记事本,输入了一个字符 a。接下来,他有两种操作:
nkxjlym 知道,要让 Ambition 的电脑死机,至少要在记事本中输入 k 个字符。
不幸的是,Ambition 走前,为了防止 nkxjlym 机惨他,在电脑里写了一段程序,使得 nkxjlym 进行操作1的时间不是一个固定值,而是 v=rnd(),其中 rnd 是一段随机数程序,每一次调用都会返回一个新的值。
Ambition 马上就要回来了,nkxjlym 想要知道,假如以最优顺序按键,让 Ambition 的电脑死机的时间最短是多少。
以下是这段随机数程序的 C++ 版本和 py 版本。
int rnd()
{
seed = (1ll * seed * 7 + 13) % mod;
return seed;
}
def rnd():
global seed
seed = (seed * 7 + 13) % mod
return seed
第一行,一个整数 t(1≤t≤104),代表数据组数。
对于每组数据,输入仅有一行四个整数 seed,mod,w,k(0≤seed≤109;1≤mod,w≤109;2≤k≤109),前两个数字代表随机数生成器中的常数,第三个数字代表粘贴操作所需的时间,最后一个数字代表让 Ambition 的电脑死机的最少字符数。
对于每组数据,输出一个整数,代表让 Ambition 的电脑死机的最短时间。
输入样例
4
0 1 1 2
8 1 2 79
731 483 166 443
880889741 623864658 89252520 848014988
输出样例
1
14
3185
7402394725