编程题
### 问题描述 对于一个整数,在计算机中是由二进制表示成的,从右往左依次从低位到高位,最右边是第 $0$ 位。 例如 $13$,其在计算机中的二进制为 $1101$,原理为 $1\times 2^0+0\times 2^1+1\times 2^2+1\times 2^3=13$。 现在给定 $1$ 个整数 $n$ 和 $m$ 次操作,操作具体为: `1 x`:输出 $n$ 第 $x$ 位的值是 $0$ 还是 $1$,例如 $13$ 的第 $2$ 位值是 $1$。 `2 l r`:将 $n$ 第 $l$ 位到第 $r$ 位的值按位取反,然后输出 $n$ 的值。 `3 l r`:将 $n$ 第 $l$ 位到第 $r$ 位设置为 $1$,然后输出 $n$ 的值。 `4 l r`:将 $n$ 第 $l$ 位到第 $r$ 位设置为 $0$,然后输出 $n$ 的值。 `5`:输出该整数二进制中最后一个 $1$ 所代表的值,例如 $11010$ 你需要输出 $2$,$11000$ 你需要输出 $8$,如果不存在 $1$ 输出 $0$。 ### 输入格式 第一行输入两个正整数 $n,m$。 ($1\le n< 2^{30},1\le m\le 2\times 10^5$) 接下来 $m$ 行,输入为其中 $1$ 种: `1 x`:输出 $n$ 第 $x$ 位的值,例如 $13$ 的第 $2$ 位值是 $1$。$(0\le x< 30)$ `2 l r`:将 $n$ 第 $l$ 位到第 $r$ 位的值按位取反,然后输出 $n$ 的值。$(0\le l\le r\le 30)$ `3 l r`:将 $n$ 第 $l$ 位到第 $r$ 位设置为 $1$,然后输出 $n$ 的值。$(0\le l\le r\le 30)$ `4 l r`:将 $n$ 第 $l$ 位到第 $r$ 位设置为 $0$,然后输出 $n$ 的值。$(0\le l\le r\le 30)$ `5`:输出该整数二进制中最后一个 $1$ 所代表的值,例如 $11010$ 你需要输出 $2$,$11000$ 你需要输出 $8$,如果不存在 $1$ 输出 $0$。 ### 输出格式 对于每次操作,按照题目要求输出。 ### 样例输入 ```text 13 6 1 3 2 1 3 3 1 3 4 1 2 5 2 1 1 ``` ### 样例输出 ```text 1 3 15 9 1 11 ``` ### 说明 $13$ 的二进制为 $1101$。 第一次操作输出 $1$。 第二次操作后二进制变成 $0011$,输出 $3$。 第三次操作后二进制变成 $1111$,输出 $15$。 第四次操作后二进制操作变成 $1001$,输出 $9$。 第五次操作输出 $1$。 第六次操作后二进制变成 $1011$,输出 $11$。
查看答案
赣ICP备20007335号-2