AT_past202212_o シフトとシフト
题目描述
给定一个长度为 $N$ 的整数序列 $A = (A_1, A_2, \ldots, A_N)$。每个 $A_1, A_2, \ldots, A_N$ 都是一个 $D$ 位的十进制整数(没有前导零),且各位数字都不为 `0`。
你会得到 $Q$ 个操作请求。每个请求类型为 1、2 或 3,如下所述。请按照输入顺序依次处理 $Q$ 个请求。
【类型 $1$】
> $1\;\;x$
对序列 $A$ 进行 $x$ 次左循环平移。即若 $A = (a_1, a_2, \ldots, a_N)$,操作后 $A = (a_{x+1}, a_{x+2}, \ldots, a_N, a_1, a_2, \ldots, a_x)$。
【类型 $2$】
> $2\;\;l\;\;r\;\;y$
对于 $i = l, l+1, \ldots, r$,做如下操作:
> 令 $d_1 d_2 \ldots d_D$ 表示 $A_i$ 的十进制表示。将 $A_i$ 替换成 $d_{y+1} d_{y+2} \ldots d_D d_1 d_2 \ldots d_y$,即对 $A_i$ 的各位数字左循环平移 $y$ 次后得到的新整数。
【类型 $3$】
> $3\;\;l\;\;r$
输出 $A_l \oplus A_{l+1} \oplus \cdots \oplus A_r$ 的结果,这里 $\oplus$ 表示按位异或运算。
输入格式
输入通过标准输入给出,格式如下:
> $N\;\;D\;\;A_1\;\;A_2\;\;\ldots\;\;A_N\;\;Q\;\;query_1\;\;query_2\;\;\vdots\;\;query_Q$
其中 $query_i$ 的格式分别对应题目描述中的三种类型之一。
输出格式
对于每一个类型 $3$ 的请求,输出一行一个结果。各结果以换行符分隔。
说明/提示
### 样例解释 1
初始时,$A = (A_1, A_2, A_3, A_4, A_5) = (123, 234, 345, 456, 567)$。
- 第 $1$ 个请求,输出 $A_2 \oplus A_3 \oplus A_4 = 234 \oplus 345 \oplus 456 = 123$。
- 第 $2$ 个请求后,$A = (456, 567, 123, 234, 345)$。
- 第 $3$ 个请求,输出 $A_2 \oplus A_3 \oplus A_4 = 567 \oplus 123 \oplus 234 = 678$。
- 第 $4$ 个请求后,$A = (456, 567, 312, 423, 534)$。
- 第 $5$ 个请求,输出 $A_2 \oplus A_3 \oplus A_4 = 567 \oplus 312 \oplus 423 = 680$。
### 数据范围
- $2 \leq N \leq 10^5$
- $1 \leq Q \leq 10^5$
- $2 \leq D \leq 9$
- $10^{D-1} \leq A_i < 10^D$
- $A_i$ 的每一位数字都不为 $0$。
- $1 \leq x \leq N-1$
- $1 \leq y \leq D-1$
- $1 \leq l \leq r \leq N$
- 至少有一个请求是类型 $3$。
- 输入中所有数均为整数。
由 ChatGPT 5 翻译