est ce que quelqu'un peut juste me donner une indication comment je peux definir une faction qui pour toute n réel naturel ,donne un entier naturel "i" tel tel que n >= max(fact(i) , je crois c'est ca qui manque dans mon code , sinon vous avez des idées pour me guidez , ... Merci d'avance
Un marchand de légumes très maniaque souhaite ranger ses petits pois en les regroupant en boîtes de telle sorte que chaque boîte contienne un nombre factoriel de petits pois. On rappelle qu'un nombre est factoriel s'il est de la forme 1, 1 x 2, 1 x 2 x 3, 1 x 2 x 3 x 4... et qu'on les note sous la forme suivante :
n!=1×2×3×…×(n−1)×nn!=1×2×3×…×(n−1)×n
Il souhaite également utiliser le plus petit nombre de boîtes possible.
Ainsi, s'il a 17 petits pois, il utilisera :
2 boîtes de 3! = 6 petits pois
2 boîtes de 2! = 2 petits pois
1 boîte de 1! = 1 petits pois
ce qui donne bien 2 x 3! + 2 x 2! + 1 x 1! = 12 + 4 + 1 = 17.
D'une manière générale, s'il a nbPetitsPois, il doit trouver une suite a1,a2,…,apa1,a2,…,ap d'entiers positifs ou nuls avec ap>0ap>0 et telle que :
C'est un exercice marrant, la 1ere chose a regarder c'est:
1<= nbPetitsPois <= 500 000 000
Cela signifie que la plus grosse boite est de 12!
Maintenant comme l'explique PierrotLeFou, il faut juste aller de la plus grosse a la plus petite boite et regarder si n > boite et si oui de quel facteur.
Une optimisation est de stocker une fois pour toute les factorielles pour eviter de le recalculer a chaque fois dans une liste ou alors juste calculer fact(12) et la décrémenter à chaque fois. On arrive au code suivant:
from math import factorial
def foo(n):
box_content = factorial(12)
box_size = 12
ans = []
while True:
if box_content < n:
j = n // box_content
ans.append((box_size, j))
n %= box_content
if n == 0:
return ans
box_content //= box_size # to not recompute the previous factorial
box_size -= 1
print(foo(100))
Quelqu'un peut m'aider à trouver une solution, je voudrais afficher le resultat dans l'interface tkinter sachant que je dois utiliser les listes pour les calculs. Est-il possible de se passer du console lors de la saisie des données?
Merci d'avance.
- Edité par MohamedAliBenAissa 18 septembre 2020 à 4:12:28
Quelqu'un peut m'aider à trouver une solution, je voudrais afficher le resultat dans l'interface tkinter sachant que je dois utiliser les listes pour les calculs. Est-il possible de se passer du console lors de la saisie des données?
Merci d'avance.
Crée ton propre sujet ...
- Edité par MohamedAliBenAissa il y a environ 1 heure
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.