#P4991. 愤怒的XiaoX
愤怒的XiaoX
背景
答疑请到 https://www.luogu.org/discuss/show?postid=79498
在几天前的模拟赛上,XiaoX 又双叒叕 AK 了
他想卡一卡大家,于是他出了下面的一道题:
题目描述
给定一个序列,你要维护下列操作:
-
1 l r k,表示从 到 的数字最后 位按位取反 -
2 l r k,表示从 到 的数字最后 位进行翻转 -
3 w表示查询 这个位置的值
为了降低这道题的难度,我们做出以下规定:
对于序列的操作,我们的 在一定范围内是一定的
我们一共会有 个
每个 后面跟着一些操作
这些操作的 (修改的位数)都是相同的
按位取反定义:
比如说,一个数的二进制表示是:
10100111
对后 位取反后变成:
10111000
翻转定义:
比如说,一个数的二进制表示是:
10100111
对后 位翻转后变成:
10111100
输入格式
第一行,两个整数 ,,表示序列长度和 的数量
第二行, 个数,表示原始序列
下面 组操作,对于每组操作第一行两个数 ,,表示操作数量和在这些操作中 的值
下面 行,表示该组操作
输出格式
对于每个 操作,输出一行一个整数,表示答案的大小
5 2
665667089 948925818 1118302620 288255565 1682529647
5 2
1 3 4
3 1
2 3 5
2 2 4
3 4
5 25
1 3 3
1 3 4
3 1
2 1 5
2 1 3
665667089
288255566
665667089
提示
对于 的数据,没有 操作
对于另 的数据,没有 操作
对于另 的数据,没有 操作
对于 的数据,
对于 的数据,
对于 的数据,,,初始序列制造方式为 rand()*rand()(windows下)
感谢 @swhsz 验题