Python HackerRank捐赠';回答错误';和';超时';对于所有隐藏的测试用例

Python HackerRank捐赠';回答错误';和';超时';对于所有隐藏的测试用例,python,Python,我的讲师给了我一个黑客等级,让我创建代码来帮助解决一个线性伪随机数生成器问题。我理解这个问题,但似乎无法理解为什么我总是为隐藏的测试用例得到错误的答案,我用于循环的值是否有问题?下面是黑客银行的图片: 我可以在你的代码中看到两个问题- list1用[1]初始化。但是第一个元素应该是x0。因此,对于除1以外的x0值,您的list1将是错误的 在范围(x0,n)内的i的循环中,它是从x0到n-1的迭代。但是如果n是5,那么list1应该包含5个元素。其中的1个元素将是x0。因此,您需要填充n-1

我的讲师给了我一个黑客等级,让我创建代码来帮助解决一个线性伪随机数生成器问题。我理解这个问题,但似乎无法理解为什么我总是为隐藏的测试用例得到错误的答案,我用于循环的值是否有问题?下面是黑客银行的图片:


我可以在你的代码中看到两个问题-

  • list1
    [1]
    初始化。但是第一个元素应该是
    x0
    。因此,对于除1以外的
    x0
    值,您的
    list1
    将是错误的

  • 在范围(x0,n)内的i的循环中,它是从
    x0
    n-1
    的迭代。但是如果
    n
    是5,那么
    list1
    应该包含5个元素。其中的1个元素将是
    x0
    。因此,您需要填充
    n-1
    元素。如果再次
    x0
    不是1,则您的
    list1
    将包含较少的元素

  • 所以第一个循环应该是这样的-

    list1 = [x0]
    list2 = []    
    x = x0
    
    for i in range(1,n):
        x = ((a*x)+b) % m
        list1 += [x]
    
    对于第二个循环,您真的需要任何列表吗。我认为这应该足够了-

    for (i,y) in queries:
        count = 0
        for z in list1:
            if y == (int((i*z)/m)):
            count+=1
        print (count)
    

    您共享的链接已断开。请提供一个更好的link@Yatin我已经更新了链接,以显示问题图片和截图可以很好地添加到帖子中,但请确保没有这些图片和截图的帖子仍然清晰有用。如果您发布文本图像,请确保您也将实际文本复制粘贴或直接键入到文章中。请参阅(相同的逻辑适用于文本)。基本文本只出现在图片中的帖子可能会因为缺少足够的细节而被关闭。好吧!谢谢,非常感谢!这个解释真的帮助我理解了
    for (i,y) in queries:
        count = 0
        for z in list1:
            if y == (int((i*z)/m)):
            count+=1
        print (count)