【例7】四数乘积
3.代码实现
class Solution:
def numofplan(self, n, a, k):
sum = [0] * 1000010
cnt = [0] * 1000010
for i in range(n):
if a[i] > k:
continue
cnt[a[i]] += 1
for i in range(n):
for j in range(i + 1, n):
if a[i] * a[j] > k:
continue
sum[a[i] * a[j]] += 1
for i in range(1, k + 1):
cnt[i] += cnt[i - 1]
sum[i] += sum[i - 1]
ans = 0
for i in range(n):
for j in range(i + 1, n):
res = a[i] * a[j]
if res > k:
continue
res = k // res
ans += sum[res]
if a[i] <= res:
ans -= cnt[res // a[i]]
if a[i] <= res // a[i]:
ans += 1
if a[j] <= res:
ans -= cnt[res // a[j]]
if a[j] <= res // a[j]:
ans += 1
if a[i] * a[j] <= res:
ans += 1
return ans // 6
#主函数
if __name__ == '__main__':
n = 5
a = [1, 1, 1, 2, 2]
k = 3
solution = Solution()
print("方案总数为:", solution.numofplan(n, a, k))
【例8】将整数A转换为B
3.代码实现
class Solution:
def bitSwapRequired(self, a, b):
c = a ^ b
cnt = 0
for i in range(32):
if c & (1 << i) != 0:
cnt += 1
return cnt
if __name__ == '__main__':
temp = Solution()
a1 = 4; b1 = 45
a2 = 10; b2 = 26
print(("输入:"+str(a1)+" "+str(b1)))
print(("输出:"+str(temp.bitSwapRequired(a1,b1))))
print(("输入:"+str(a2)+" "+str(b2)))
print(("输出:"+str(temp.bitSwapRequired(a2,b2))))