PCSI - informatique commune Mardi 14 janvier 2014 : DS 1
Avertissement : ce sujet est très (trop !) long, mais il n’y a pas de piège particulier, de chose tordue
(sauf l’avant-dernière question !). Vous serez payés pour ce que vous faites ; pas sanctionnés pour ce que
vous ne faites pas.
En première approximation, quelqu’un faisant correctement trois problèmes aura 20, et le premier
problème est suffisant pour approcher la moyenne.
Vous pouvez traiter les exercices dans l’ordre que vous voulez, pourvu que ceux-ci soient CLAIRE-
MENT identifiés.
Vous veillerez à mettre votre nom et votre classe, et vous numéroterez vos copies (pas les pages...).
1 Suite et sommes
On considère dans cette partie la suite définie par ses premiers termes u0=u1=u2= 1 et, pour
tout n∈N, la relation un+3 = 2un+un+1.
1. Écrire une fonction prenant en entrée un entier n>0et renvoyant un. Expliquer son comportement
lors de l’appel sur l’entrée n= 9. Attention, il est interdit d’écrire un programme récursif 1.
2. Dans votre programme précédent, évaluer le nombre d’additions réalisées lors du calcul de un.
3. Écrire un programme prenant en entrée un entier n>0et renvoyant n
P
k=0
uk. Expliquer son com-
portement pour les entrées n= 2 et n= 6.
4. Dans le programme précédent, évaluer le nombre d’additions réalisées lors du calcul de n
P
k=0
uk.
5. Écrire un programme prenant en entrée un entier n>0et renvoyant n
P
k=0
ukun−k. Expliquer son
comportement pour l’entrée n= 5.
6. Dans votre programme précédent, évaluer le nombre d’additions réalisées lors du calcul de n
P
k=0
ukun−k.
>>> [u(n) for n in range(10)]
[1, 1, 1, 3, 3, 5, 9, 11, 19, 29]
>>> [somme(n) for n in range(10)]
[1, 2, 3, 6, 9, 14, 23, 34, 53, 82]
>>> [somme_produit(n) for n in range(10)]
[1, 2, 3, 8, 13, 22, 43, 68, 117, 202]
2 Des tableaux
1. Écrire une fonction prenant en entrée un tableau d’entiers et retournant le produit des éléments
de ce tableau (autant de fois qu’ils sont présents 2). Le résultat renvoyé devra être égal à 1si le
tableau est vide.
2. Écrire une fonction prenant en entrée un tableau d’entiers et retournant le produit des éléments de
ce tableau qui sont supérieurs ou égaux à 10.
3. Écrire un programme prenant en entrée un tableau, disons t1 et retournant un autre tableau,
disons t2 tel que pour tout i∈[[0,|t1| − 1]],t2[i] = (0 si t1[i]<0
t1[i] sinon
On veillera à ce que t1 ne soit pas modifié.
1. i.e. : qui s’appelle.
2. Bref : il n’y a pas de piège ou de difficulté sur ce point ; même remarque pour la question suivante !
1