首页 > 其他分享 >力扣(leetcode) 342. 4的幂(合理利用运算符)

力扣(leetcode) 342. 4的幂(合理利用运算符)

时间:2022-10-27 20:03:54浏览次数:75  
标签:力扣 elif False 25 运算符 342 return 100


题目在这:​​https://leetcode-cn.com/problems/power-of-four/​题目分析:
昨天2 的幂,今天4的幂。题目不多说了~按照昨天的思路直接开撸。

法一:

经过不断的测试,得到以下一条规律:
能被一百整除 ,并且相差的位数为偶数,并且其中1的个数只有一个.

elif (int(x)%100 == 0 and (len(x)-3)%2 == 0 and x.count('1') == 1)or n == 1:

这个方法比较不通用,只能是不断的试错然后加条件。
完整代码

n = 20

x = "{:b}".format(n)

if n<=0:
print(False)
# 能被一百整除 ,并且差的位数为偶数,并且其中1的个数只有一个.
elif (int(x)%100 == 0 and (len(x)-3)%2 == 0 and x.count('1') == 1)or n == 1:
print(True)
else:
print(False)

法二:

思路分析:

16 = 4 * 4
64 = 4 * 4 * 4
也就是说,如果这个传进来的数N为4的X次幂,则N不断除以4最后可以得到1。
可以设计算法: n//44 == n。
如:15 // 4 = 3 但 3 * 4 = 12 不等于15 所以15没法由4的X次幂得来。
而 100 // 4 = 25 且25 * 4 =100 但 25 // 4 =6 而 6
4 = 24 不等于25
所以 传进来的这个数N在不断除4 再乘4的过程有一次不符合该算法都不行。
于是得到代码:

if n <= 0 :
return False
while True:
if n == 1:
return True
elif n//4*4 != n :
return False
n /= 4

注:
python 里 ‘//’ 运算符 取整 ‘/’ 运算符精确除法,带小数。


标签:力扣,elif,False,25,运算符,342,return,100
From: https://blog.51cto.com/u_15849381/5801747

相关文章