判断一个int型整数是否是2的n次方,如果是则输出n值,否则输出NO!。 输入格式: 输入若干个整数,以空格或换行间隔。 输出格式: 对每一个整数,在一行中输出n值或“NO!”。 输入样例1:
时间: 2024-11-17 12:30:19 浏览: 34
输入一个数字n,输出一个n层的特定三角形
5星 · 资源好评率100%
判断一个 `int` 类型的整数是否是 \(2^n\) 的形式,可以使用循环和数学特性来解决。首先,我们需要确定这个数的二进制表示,如果它是完全由连续的 '1' 组成的(除了最开始的 '0'),那么它就是 \(2^n\) 的形式。以下是算法步骤:
1. 输入一个整数。
2. 将该数转换为二进制表示。
3. 遍历二进制位,如果发现有任何一位不是 '1' 或者第一位不是 '0',说明这不是 \(2^n\) 形式,输出 "NO!"。
4. 如果遍历完所有位都是 '1',说明它是 \(2^n\) 形式,记录下当前二进制位的数量减一即为 n 值。
5. 输出 n 值。
Python 示例代码:
```python
def find_power_of_two(n):
binary = bin(n)[2:] # 去掉 '0b' 前缀
if binary[0] != '1': # 如果第一位不是 '1'
return "NO!"
for bit in binary[1:]:
if bit != '1':
break
else:
n_bits = len(binary) - 1 # 计算 n
return n_bits
while True:
try:
num = int(input())
print(find_power_of_two(num))
except EOFError: # 结束输入
break
```
阅读全文