Je corrige le code (l'erreur était d'avoir utilisé ^au lieu de ** pour des exponentiations :
- Code: Tout sélectionner
from math import *
def rangements(n):
q=n//4 ; r=n%4
if r==0 :
return factorial(n) // factorial(4)**q // factorial(q)
if r==3 :
return factorial(n) // factorial(4)**q //\
factorial(q)// factorial(3)
if r==2 :
p1= factorial(n) // factorial(4)**q //\
factorial(q) // factorial(2)
if q>0 :
p2= factorial(n) // factorial(4)**(q-1) //\
factorial(q-1)// factorial(3)**2 // factorial(2)
else : p2=0
return p1+p2
if r==1 :
p1= factorial(n) // factorial(4)**q // factorial(q)
if q>0 :
p2= factorial(n) // factorial(4)**(q-1)//\
factorial(q-1)// factorial(3) // factorial(2)
else : p2=0
if q>1 :
p3= factorial(n) // factorial(4)**(q-2) //\
factorial(q-2)// factorial(3)**3 // factorial(3)
else : p3=0
return p1+p2+p3
et maintenant les résultats sont plus raisonnables :
pour n = 0 nombre de partitions = 1
pour n = 1 nombre de partitions = 1
pour n = 2 nombre de partitions = 1
pour n = 3 nombre de partitions = 1
pour n = 4 nombre de partitions = 1
pour n = 5 nombre de partitions = 15
pour n = 6 nombre de partitions = 25
pour n = 7 nombre de partitions = 35
pour n = 8 nombre de partitions = 35
pour n = 9 nombre de partitions = 1855
pour n = 10 nombre de partitions = 3675
pour n = 11 nombre de partitions = 5775
pour n = 12 nombre de partitions = 5775
pour n = 13 nombre de partitions = 725725
pour n = 14 nombre de partitions = 1576575
pour n = 15 nombre de partitions = 2627625
pour n = 16 nombre de partitions = 2627625
pour n = 17 nombre de partitions = 640264625
pour n = 18 nombre de partitions = 1474097625
pour n = 19 nombre de partitions = 2546168625
pour n = 20 nombre de partitions = 2546168625
L'algorithme est toujours le même : pour n=4q+1 par exemple, il y a q+1 boîtes.
On considère les n! permutations des objets.
On met les 4 premiers dans une boîte, les 4 suivants dans une boîte, etc. et le dernier dans une boîte;
ou alors si q>0 on met, dans l'ordre de la permutation, q-1 fois 4 objets dans une boîte, puis 3 objets dans une boîte et les 2 derniers dans une boîte;
ou alors si q>1 on met, dans l'ordre de la permutation, q-2 fois 4 objets dans une boîte, puis trois fois 3 objets dans une boîte.
Pour chaque schéma de répartition on peut permuter les objets à l'intérieur de chaque boîte, et on peut permuter les boîtes ayant même nombre d'objets.
Maintenant je suis sûr de mon coup. Lycéen95, tu pourras comparer avec ce que tu trouves.