给定一个长度为 n 的序列 a,序列中的数字都是正整数,你需要完成一段代码,完成以下两种操作:
1 l r:将序列中所有下标范围为 [l,r](1≤l≤r≤n) 的数字变成它的或数。
2 pos:询问当前下标为 pos 的数字是多少。
一个数字的或数是指将一个正整数的的十进制的表示形式每个数位按位或操作之后的结果,例如,数字 2510 的或数就是 710,因为 210 OR 510=710。
举个例子,令 fOR(x) 代表 x 的或数,那么 fOR(11)=1,fOR(45)=5,fOR(14)=5,fOR(520)=7。
按位或运算是一种位运算操作,通常用于处理二进制数据。它将两个二进制数的对应位进行比较,如果其中一个位上的数是1或者两个位上的数都是1,那么结果位就被设置为1。只有当两个位都是0的时候,结果位才会是0。
按位或运算通常用符号 OR 表示(在编程语言中通常用 '|' 表示),它的规则如下:
- 0 OR 0 = 0
- 0 OR 1 = 1
- 1 OR 0 = 1
- 1 OR 1 = 1
举个例子,假设有两个正整数数:A=210=0102 和 B=510=1012。进行按位或运算后,得到的结果是:
A OR B=710=1112
这意味着,每一位上的 1 都是由 A 和 B 中相应位上的 1 通过按位或操作得到的。