Ici, nous allons apprendre à calculer le nombre de 0 à droite dans le résultat factoriel de n'importe quel nombre. Donc si n = 5, alors 5 ! =120. Il n’y a qu’un seul 0 final. Pour 20 !, ce serait 4 zéros comme 20 = 2432902008176640000.
Le moyen le plus simple est de calculer la factorielle et de calculer 0. Mais pour des valeurs de n plus grandes, cette approche échoue. Nous allons donc adopter une autre approche. Si les facteurs premiers sont 2 et 5, des zéros à droite apparaîtront. Si on calcule 2 et 5, on obtient le résultat. Pour ce faire, nous suivrons cette règle.
TrailingZeros(n) = comptage de 5 en facteurs premiers factoriels (n)
begin count := 0 for i := 5, (n/i) >= 1, increase i := i * 5, do count := count + (n / i) done return count; end
#include <iostream> #include <cmath> #define MAX 20 using namespace std; int countTrailingZeros(int n) { int count = 0; for (int i = 5; n / i >= 1; i *= 5) count += n / i; return count; } main() { int n = 20; cout << "Number of trailing zeros: " << countTrailingZeros(n); }
Number of trailing zeros: 4
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!