为什么我在hackerearth平台上遇到MLE(超出内存限制)

问题描述 投票:0回答:1

如果您不知道解决方案,请留下它,其他人会给出答案,但不要投反对票。

t = int(input())

for i in range(t):
    x,l,n = map(int, input().split())
    for xi in range(x,-1,-1):
        if xi*(2**(n-1))<=l:
            print(x-xi)
            break

以上是我的输入程序

1
1000000000000000000 0 1000000000000000000

我正在获得 MLE。我不明白。但在 hackerearth 中他们提到我们最多可以使用 256mb。

如果我在 C++ 中运行相同的逻辑,它工作正常。

我希望它运行时没有任何错误。

如果有人想问这个问题就麻烦了 -

凯特是巫师。现在她应该通过考试了。

考试期间她要进魔法室N次。最初房间里有 X 个魔法物品。每次访问之前,她可以使用魔法来减少房间中魔法物品的数量。对于每件物品,她都会花费 1 点法力值来摧毁它。每次访问后,魔法物品的数量会增加 2 倍。如果房间里的魔法物品超过 L 个,她就无法进入房间。凯特至少需要多少法力值才能通过考试?

您需要针对多个测试用例来解决这个问题。

Those who think I was wrong please open this image I completed 200+ problems in leetcode not seen this kind of error

python algorithm data-structures time-complexity memory-limit
1个回答
0
投票

t = int(input())

for i in range(t):
    x,l,n = map(int, input().split())
    if n>60:
        print(x)
    elif n==0:
        print(0)
    else:
        for xi in range(x,-1,-1):
            if xi*(2**(n-1))<=l:
                print(x-xi)
                break

我正在计算 2**9999999999999999 这占用了大量内存。所以我使用条件来检查该值直到 60。根据问题中给定的限制条件,我得出了 60 号。我通过对此问题的评论理解了这个错误。 感谢您的帮助...:)

© www.soinside.com 2019 - 2024. All rights reserved.