0基础学习Python算法(四)

【例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))))

猜你喜欢

转载自blog.csdn.net/babyai996/article/details/134589943
今日推荐