Bonjour à vous. J'ai un problème:
Je dois créer un programme qui fait la somme de toutes les valeurs d'une liste entre deux bornes, cependant la liste pouvant être immenses et le nombre de fois où l'on peut me demander des sommes aussi, mon programme est trop long ...
Après plusieurs essais j'ai ce code qui est le plus cours pour l'instant:
Avez vous des idées afin d'améliorer la vitesse de mon programme? J'ai pensé a stocker toutes les valeurs que j'aurais calculé afin de pouvoir les réutiliser mais je ne sais pas comment faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 import sys input=sys.stdin.readline n,r=input().split() n=int(n) r=int(r) N=list(map(int,input().split())) c=sum(N) for i in range(r): a,b=input().split() a=int(a) b=int(b) if (b-a)<=n/2: #si l'intervalle est plus petit que la moitié de la liste print(sum(N[a-1:b])) else: d=c-sum(N[0:a-1])-sum(N[b:]) #sinon on retire les termes en "trop" print(d)
Merci et bonne journée.
Partager