酷代码 AI
菜单

给定一个数n,你可以进行若干次操作,每次操作可以翻转n的二进制表示下的某一位,即将0变成1,1变成0。 请问:至少需要多少次操作,才能将n变成n−1。 输入 一个正整数n。(1<n≤10^9) 输出 输出最少的操作次数。 样例输入 复制 10 样例输出 复制 2

```python # 读取输入的正整数n n = int(input()) # 计算n和n - 1的异或结果 xor_result = n ^ (n - 1) # 统计异或结果中1的个数 count = bin(xor_result).count('1') # 输出最少操作次数 print(count) ``` 代码解释 1. 读取输入:通过`input()`函数读取用户输入的正整数`n`,并使用`int()`函数将其转换为整数类型。 2. 异或操作:使用异或运算符`^`计算`n`和`n - 1`的异或结果`xor_result`。异或操作的特点是相同为0,不同为1,因此异或结果中1的位置就是`n`和`n - 1`二进制表示中不同的位。 3. 统计1的个数:使用`bin()`函数将异或结果转换为二进制字符串,然后使用`count()`方法统计字符串中`'1'`的个数,这个个数就是`n`和`n - 1`二进制表示中不同的位数,也就是将`n`变成`n - 1`所需的最少操作次数。 4. 输出结果:使用`print()`函数输出最少操作次数。 [2026-01-23 19:43:10 | AI问答 | 293点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多