洛谷p4828为什么会re

问题遇到的现象和发生背景

在本地编译器上没有问题。
另外,有没有什么优化的方法?题解上找不到python的版本,算法是按题解来的,但用python会超时

img

img

问题相关代码,请勿粘贴截图
if __name__ == '__main__':
    n = int(input())
    nums = list(map(int,input().split()))
    tri = []
    tri.append([1])
    for i in range(1,2000):
        sub = []
        for j in range(i+1):
            if j == 0 or j == i:
                sub.append(1)
            else:
                sub.append((tri[i-1][j-1]+tri[i-1][j])%998244353)
        tri.append(sub[:])
    q = int(input())
    for i in range(q):
        x,y = map(int,input().split())
        sum = 0
        cnt = y-1
        for j in range(len(tri[x])):
            if cnt == n-1:
                sum = (sum+tri[x][j]*nums[cnt])%998244353
                cnt = 0
            else:
                sum = (sum+tri[x][j]*nums[cnt])%998244353
                cnt += 1
        print(sum)


试试c++

一些简单的算法尽量不调库实现,调库实现比较慢

第一行不需要加,提交的时候选择PyPy3 运行速度更快。但是还是没有C快,换语言吧

python版本的确会出现这个问题,我刚才试了下也不行

用python会RE(运行时错误),这个可能不是题主代码的问题,而可能是语言本身运行该算法时的问题,可以考虑用C/C++试试。
以上仅供参考,
希望对题主有所帮助!!

你题目的解答代码如下:

n = int(input())
nums = list(map(int,input().split()))
tri = [nums]
for i in range(2000):
    sub = [0]*n
    p = tri[-1]
    for j in range(n):
        sub[j] = (p[j]+p[(j+1)%n])%998244353
    tri.append(sub)
q = int(input())
for i in range(q):
    x,y = map(int,input().split())
    print(tri[x][y-1])

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img