Je comprends que c'est un problème de programmation classique et donc je veux être clair, je ne cherche pas de code comme une solution, mais j'apprécierais une poussée dans la bonne direction. J'apprends le C++ et, dans le cadre du processus d'apprentissage, j'essaie de résoudre certains problèmes de programmation. J'essaye d'écrire un programme qui traite des nombres jusqu'à la factorielle de 1 milliard. Évidemment, cela va être un nombre énorme et beaucoup trop grand pour faire face à des opérations arithmétiques normales. Toute indication quant à la direction que je devrais suivre pour essayer de résoudre ce type de problème serait appréciée.Calcul de grands factoriels en C++
Je préfère essayer de résoudre cela sans l'aide des bibliothèques supplémentaires si possible
Merci
PS - le problème est ici http://www.codechef.com/problems/FCTRL
est ici la méthode que j'utilisé pour résoudre le problème , ceci a été réalisé en lisant les commentaires ci-dessous:
Solution - Le nombre 5 est un facteur premier de tout nombre se terminant par zéro. Par conséquent, en divisant le nombre factoriel par 5, récursivement, et en ajoutant les quotients, vous obtenez le nombre de zéros fin dans le résultat factoriel
E.G. - Nombre de zéros à droite dans 126! = 31
126/5 = 25 reste 1
25/5 = 5 reste 0
5/5 = 1 reste 0
25 + 5 + 1 = 31
Cela fonctionne pour n'importe quelle valeur, continuez à diviser jusqu'à ce que le quotient soit moins que 5
Dupe: http://stackoverflow.com/questions/1966077/calculate-the-factorial-of-an-arbitrarily-large-number-showing-all-the-digits –
Pas vraiment dup. Le problème d'OP peut être résolu sans connaître aucun des chiffres de la factorielle :-) – ephemient
Ce n'est pas un dup du tout, car résoudre ce problème en calculant tous les chiffres de la factorielle n'a aucune chance d'atteindre la limite de 8s sur ce problème. Le milliard factoriel pousse 9 milliards de chiffres décimaux, donc vous manipuleriez environ 3-4 Go de données. –