Capisco che questo è un classico problema di programmazione e quindi voglio essere chiaro che non cerco codice come soluzione, ma apprezzerei una spinta nella giusta direzione. Sto imparando C++ e come parte del processo di apprendimento sto tentando alcuni problemi di programmazione. Sto tentando di scrivere un programma che si occupa di numeri fino a fattoriale di 1 miliardo. Ovviamente questi saranno numeri enormi e troppo grandi per poter gestire le normali operazioni aritmetiche. Qualsiasi indicazione su quale direzione dovrei andare nel cercare di risolvere questo tipo di problema sarebbe apprezzata.Calcolo di fattoriali grandi in C++
Preferisco cercare di risolvere questo senza l'utilizzo di librerie aggiuntive, se possibile,
Grazie
PS - il problema è qui http://www.codechef.com/problems/FCTRL
Ecco il metodo che ho usato per risolvere il problema , questo è stato ottenuto leggendo i commenti seguenti:
Soluzione - Il numero 5 è un fattore primo di qualsiasi numero che termina in zero. Pertanto, dividendo il numero fattoriale per 5, in modo ricorsivo, e sommando i quozienti, si ottiene il numero di zeri finali nel risultato fattoriale
E.G. - Numero di zeri finali in 126! = 31
126/5 = 25 restante 1
25/5 = 5 restante 0
5/5 = 1 resto 0
25 + 5 + 1 = 31
Funziona per qualsiasi valore, continua a dividere fino a quando il quoziente è inferiore a rispetto a 5
Dupe: http://stackoverflow.com/questions/1966077/calculate-the-factorial-of-an-arbitrarily-large-number-showing-all-the-digits –
Non proprio un dup. Il problema dell'OP può essere risolto senza conoscere nessuna delle cifre del fattoriale :-) – ephemient
Non è affatto un problema, perché risolvere questo problema calcolando tutte le cifre del fattoriale non ha alcuna possibilità di entrare nel limite degli 8 su questo problema. Un miliardo di fattori spinge a lungo 9 miliardi di cifre decimali, quindi dovresti manipolare circa 3-4 GB di dati. –