题目

输入整数 n、位索引 k 以及操作指令 op(1 为置 1,0 为清 0),对整数的指定二进制位执行修改并输出结果。

输入格式:输入一行包含三个整数 n k op,以空格分隔(op 取值为 1 或 0)。

输出格式:输出修改后的十进制整数,末尾换行。

数据范围与约定:0 ≤ n ≤ 10^9,0 ≤ k < 32,op ∈ {0, 1}。

思路与算法

1. 指定位置 1
按位或掩码:n | (1 << k)。

2. 指定位清 0
按位与反转掩码:n & ~(1 << k)。在 32 位限制下可通过与 0xFFFFFFFF 控制位宽。

完整程序

n, k, op = map(int, input().split())
mask = 1 << k

# op == 1 时按位或置 1,op == 0 时按位与清除对应位
if op == 1:
    print(n | mask)
else:
    print(n & (~mask & 0xFFFFFFFF))

运行示例

输入:

8 1 1

输出:

10