在本地编译器上没有问题。
另外,有没有什么优化的方法?题解上找不到python的版本,算法是按题解来的,但用python会超时
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])
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!