Logo Universal Online Judge

UOJ

时间限制:2 s 空间限制:512 MB
统计

【问题描述】 不知道大家有没有听过物凄系列的一首歌,帕秋莉用卡车给博丽老板运货的故事。
又一次,卡车司机帕秋莉被拜托。红魔馆之主蕾米莉亚喜欢喝红茶,一天他要求帕秋莉开卡车帮他运红茶过来。
红茶其实是编好号了的,每个红茶都用一个非负整数来编号,从 0 开始一直到正无穷。
帕秋莉请来好朋友魔理沙,帮他一起运红茶。
一开始卡车上已经有了编号为 0 到 a 的红茶(注意 a = −1 就表示初始卡车上没有任何红茶),然后接下来到红魔馆的路上有 m 个时刻,每个时刻都会发生一种事件。 . • 第一种事件,帕秋莉到了一个红茶店,买了一个编号为 x 的红茶 (卡车上初始没有这种编号的红茶,之前也不会买过相同编号的红茶)。 • 第二种事件,一个目前在卡车上的编号为 x 的红茶飞出了卡车。• 第三种事件,魔理沙把目前不在卡车上的最早飞出去的红茶捡回了卡车上 (如果一个红茶曾经飞出去被捡回来过然后再飞出去,这里认为其飞出去的时间为最近一次飞出去的时间)。
由于描述这些事件实在是太麻烦了,聪明的魔理沙用了一个长度为 m 的整数序列 p 来描述每个时刻发生的事件。
. • 这个序列 p 里所有元素均为 [−1, b) 的整数。• 若 pi = −1 则表示时刻 i 发生了第三种事件,如果此时并不存在满足条件的飞出去的红茶,则代表魔理沙脑子没转过来,忽视此次事件。
• 否则,如果在时刻 i 编号为 pi 的红茶初始不在卡车上也从来没有通过第一种事件买过,则表示时刻 i 发生了一个买编号为 pi 的红茶的第一种事件。
• 否则,如果在时刻 i 编号为 pi 的红茶在卡车上,则表示时刻 i 发生了一个编号为pi 的红茶飞出卡车的第二种事件。
• 否则,表示时刻 i 发生了第三种事件,如果此时并不存在满足条件的飞出去的红茶,则忽视此次事件。
如果某个时刻的事件被忽视,那么我们不执行对应的操作,也不计算此时的答案。
帕秋莉是一个勤奋的人,每个时刻过后,如果这个时刻 i 发生了事件 (如果一个时刻发生的事件被忽视了,就不认为这个时刻发生了事件),令 ansi 表示时刻 i 过后卡车上所有编号小于 ansi 的红茶都出现了,而编号为 ansi 的红茶没有出现(很显然这个值是唯一的)。当然如果时刻 i 没有发生事件,则令 ansi = 0。
请你对于 1 ≤ i ≤ m 计算出 ansi × (i^2 + 7i) mod 998244353 的异或和。
【输入格式】
第一行一个整数 T,表示数据组数。
接下来有 T 行,每行表示一组数据。
每组数据依次有 m, seed, a, b, c, d 六个整数,其中 m, a, b 的意义与题面中相同;
d 表示是否只考虑第一种事件:d 的取值为 0 或 1,为特殊参数。当 d = 1 时,请忽视所有的第二种事件与第三种事件 (忽视的含义见题面描述)。seed, c 是随机数生成器的参数。
我们使用如下实现的随机数生成器 randnum()。每组数据输入该组数据中 seed 的初始值。

unsigned 32bit integer seed
function randnum ( )
seed = seed xor ( seed l s h 13)
seed = seed xor ( seed rsh 17)
seed = seed xor ( seed l s h 5)
return seed
end function
计算 p[] 的代码如下:
for i = 1 to m by step 1
if randnum ( ) mod c == 0 then
p[ i ] = −1
else
p [ i ] = randnum ( ) mod b
end if
end for
【输出格式】
每组数据输出一行表示答案。

【样例 1 输入】
1 7 327711436 4 6 3 0 【样例 1 输出】 292
【样例 1 解释】
p 序列为 [5, −1, 2, −1, 2, 5, 4]。初始时卡车上已经有了编号为 [0, 4] 的红茶。
第一个时刻,发生第一种事件,编号为 5 的红茶加入卡车,此时卡车上编号为 [0, 5] 的红茶都有,而编号为 6 的红茶没有,因此 ans1 = 6。 第二个时刻,理论上应该发生第三种事件,但是并没有红茶飞出了卡车,因此该事件被忽视,ans2 = 0。
第三个时刻,发生第二种事件,编号为 2 的红茶飞出卡车,此时卡车上编号为 [0, 1] 的红茶都有,而编号为 2 的红茶没有,因此 ans3 = 2。
第四个时刻,发生第三种事件,魔理沙捡回编号为 2 的红茶回卡车,此时与第一个时刻后情况一致,因此 ans4 = 6。
第五个时刻和第三个时刻一致,因此 ans5 = 2。
第六个时刻,发生第二种事件,编号为 5 的红茶飞出卡车,此时卡车上编号为 0, 1, 3, 4的红茶都有,而编号为 2, 5 的红茶没有,因此 ans6 = 2。
第七个时刻,发生第二种事件,编号为 4 的红茶飞出卡车,此时卡车上编号为 0, 1, 3的红茶都有,而编号为 2, 4, 5 的红茶没有,因此 ans7 = 2。
更多的样例和输入输出模板
【数据规模与约定】
对于所有数据 1 ≤ m ≤ 10^6, 1 ≤ T ≤ 50, −1 ≤ a ≤ m, 1 ≤ b ≤ 2 × m, 1 ≤ c ≤ 10^7, 0 ≤ d ≤ 1。d 表示是否只考虑第一种事件,d 的取值为 0 或 1,为特殊参数。当 d = 1 时,请忽视所有的第二种事件与第三种事件 (忽视的含义见题面描述)。
注意,d = 1 时原本合法的事件也要被忽视,故即使你没有用到这个性质,也要记得判断 d = 1 的情况。除测试点 7 以外的测试点也有可能出现 d = 1 的数据。
.png