【问题标题】:Fastest way to solve any python program containing bitwise operator解决任何包含按位运算符的 python 程序的最快方法
【发布时间】:2020-08-17 14:03:39
【问题描述】:

我有一个程序,我需要在其中找到表达式的最大值。
表达式为:

result=(x&z)*(y&z)

其中z的值在[l,r]的范围内。
我写了一个关于它的程序,它是绝对正确的。

# cook your dish here
t=int(input())

for i in range(t):
    x,y,l,r=map(int,input().split())
    L=[]
    I=[]
    for i in range(l,r+1):
        r=(x&i)*(y&i)
        L.append(r)
        I.append(i)
    R=max(L)
    i=L.index(R)
    print(L)
    print(I[i])

我想要一个更快的方法来做到这一点

【问题讨论】:

    标签: python python-3.x list time bit-manipulation


    【解决方案1】:

    当产品本身是数字x*y 时,您的result 将最大化,因为A&B 不能超过min(A,B),无论l,r+1 可能是什么范围。在这种情况下,x|y 将给出一个数字,使用该数字执行 ANDxy 将返回相同的数字

    【讨论】:

    • 你能解释更多吗
    • 只是您要查找的 Z 的值至少为x|y 在一张纸上尝试一下,您将把它当作 x 和 y .示例 x=600 y=900,现在如果您尝试在一个范围(0,2000)之间进行暴力破解。您将获得 988 的值。基本上是 x|y,它将获得 600&988=600 和 900&988=900
    • 但需要在这个范围内
    • 你应该自己做
    猜你喜欢
    • 1970-01-01
    • 2014-02-10
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2012-09-27
    • 2022-10-13
    相关资源
    最近更新 更多