python-3.x 输出匹配的解决方案中的TLE

68de4m5k  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(125)

厨师有一种熔点为 X 度的矿石。厨师窑的初始温度为 Y 度。在第 *i * 分钟之后,窑的温度增加 i 度。
找出矿石开始熔化的最短时间(以分钟为单位)。
注意事项:
我们只关心每一分钟结束时的温度,而不是一分钟。
如果窑的温度变得大于或等于熔点,则矿石开始熔化。
对于这个问题,这里是我的代码,我面对的是TLE:

t = int(input())
for i in range(t):
    x, y = map(int, input().split())
    time = 0
    # x %= pow(10, 9) + 7
    # y %= pow(10, 9) + 7

    if x == y:
        print(0)
    
    else:
        while(x>y):
            time += 1 
            y += time
        
        print(time)

问题链接:https://www.codechef.com/problems/MELTGOLD

mutmk8jj

mutmk8jj1#

您的代码在O(X)时间内运行,对于此问题来说太慢了。他们想在恒定时间内得到一个解。
你应该做的观察是:
Temperature(i) = Y + 1 + 2 + ... + i
那么
X = Y + i*(i+1)/2
解出i的二次方程,就得到了常数时间解。

相关问题