每次从A中选两个数,求满足两数之和是2的幂次方数的个数
思路:记得要枚举所有的2次方数哦
class Solution:
def countPairs(self, A: List[int]) -> int:
n,ans,mod,E=len(A),0,int(1e9+7),1<<21
mp=collections.defaultdict(int)
for i in A:
for shift in range(0,22):
d=(1<<shift)-i
ans=(ans+mp.get(d,0))%mod
mp[i]=mp.get(i,0)+1
return ans