bzoj#P3596. [SCOI2014] 方伯伯打扑克

[SCOI2014] 方伯伯打扑克

题目描述

现有 2n2^n 张牌,每张牌由 112n2^n 记上数字,为了公平,现需进行洗牌,每次洗牌操作如下:

  1. 讲所有奇数位上的牌依次取出组成新的一堆牌。
  2. 将新的一堆牌放在旧有的牌前面。

1234567812345678 洗一次后变为 1357246813572468 再洗一次变为 1526374815263748

现在有 66 个长度为 mm 的组,n,x,l,r,t,ansn,x,l,r,t,ans

其中 ansians_i 等于 2ni2^{n_i} 张牌洗了 xix_i 次牌后,把第 lil_irir_i 张牌上的数字均加 tit_i 并依次异或后的异或值 mod2n1\mod2^{n-1}

已知当 i1i\ge 1n,x,l,r,tn,x,l,r,t 数组满足以下公式:

  1. ni=(ansi1+i1)mod5+basen_i=(ans_{i-1}+i-1)\mod5+base
  2. li=(ansi1×2+li1+i1)mod2ni+1l_i=(ans_{i-1}\times2+l_{i-1}+i-1)\mod2^{n_i}+1
  3. $r_i=(ans_{i-1}+1+l_i\mod2^{\lfloor\frac{n_i}{2}\rfloor}\times2^{\lfloor\frac{n_i}{2}\rfloor}))\mod2^{n_i}+1$
  4. if(li>ri)swap(li,ri)if(l_i>r_i) swap(l_i,r_i)
  5. xi=(rili+ti1+i)mod2nix_i=(r_i-l_i+t_{i-1}+i)\mod2^{n_i}
  6. ti=(li+ri)mod2nit_i=(l_i+r_i)\mod2^{n_i}

现给出 n0,x0,l0,r0,t0n_0,x_0,l_0,r_0,t_0 的数值,求 ansm1ans_{m-1} 为多少。

输入格式

第一行包含一个整数 mm,表示数据个数。

接下来一行包含六个整数,分别为 n,x,l,r,t,Basen,x,l,r,t,Base

输出格式

输出包含 mm 行,每行一个数,表示最后的答案。

2
5 1 4 27 3 15
2700

数据规模与约定

对于 100%100\% 的数据,m5×106m \le 5 \times 10^6n60n \le 600<lr2n0<l \le r \le 2^n0<x,t<1090<x,t<10^9Base55Base \le 55

题目来源

By 佚名提供