CF679E Bear and Bad Powers of 42

题目描述

Limak 是一只不会处理查询的熊。因此,他请求你来帮忙。 我们称 $42$ 的幂(即 $1,42,1764,\ldots$)为“坏”数字。其他数字是“好”数字。 你有一个由 $n$ 个好整数 $t_{1}, t_{2}, \ldots, t_{n}$ 组成的序列。你的任务是处理 $q$ 个三种类型的查询: 1. 1 i —— 输出 $t_{i}$,单独占一行。 2. 2 a b x —— 对于 $a \leq i \leq b$,将 $t_{i}$ 赋值为 $x$。保证 $x$ 是好数字。 3. 3 a b x —— 对于 $a \leq i \leq b$,将 $t_{i}$ 增加 $x$。完成后,如果有某些 $t_{i}$ 是坏数字,则不断将这些坏数字转换为下一个比其大的好数字,直到所有 $t_{i}$ 都为好数字。 你可以注意到,每次查询结束后,所有 $t_{i}$ 都是好数字。

输入格式

第一行包含两个整数 $n$ 和 $q$($1 \leq n,q \leq 100000$),分别表示序列长度和查询数量。 第二行包含 $n$ 个整数 $t_{1}, t_{2}, \ldots, t_{n}$($2 \leq t_{i} \leq 10^9$),表示序列的初始元素。所有 $t_{i}$ 均为好数字。 接下来有 $q$ 行,每行描述一个查询。第 $i$ 行的第一个数是 $type_{i}$($1 \leq type_{i} \leq 3$),表示查询类型。保证至少有一个类型 $1$ 的查询,因此输出不为空。 对于第二、三类查询,还有 $1 \leq a \leq b \leq n$。 对于第二类查询,跟着一个整数 $x$($2 \leq x \leq 10^9$),保证 $x$ 为好数字。 对于第三类查询,跟着一个整数 $x$($1 \leq x \leq 10^9$),$x$ 可能是坏数字。

输出格式

对于每个第 $1$ 类查询,输出一行答案。

说明/提示

执行完查询 `3 2 4 42` 后,序列变为 $40,1742,49,1714,4,1722$。 执行完查询 `3 2 6 50` 后,序列变为 $40,1842,149,1814,104,1822$。 执行完查询 `2 3 4 41` 后,序列变为 $40,1842,41,41,104,1822$。 执行完查询 `3 1 5 1` 后,序列变为 $43,1845,44,44,107,1822$。 由 ChatGPT 5 翻译