#include <iostream> using namespace std; int main() { int factorialnumber = 0; cout<<"Please enter a number: "; cin>>factorialnumber; int zero_count = 0; for(int five_factor=5; five_factor<=factorialnumber; five_factor*=5) { zero_count += factorialnumber/five_factor; } cout<<"Trailing zeros of "<<factorialnumber; cout<<"! is "<<zero_count<<endl; }Many other solutions exist! If yours doesn't match the Learn4Develop key, but it still works, let us know and we'll upload it as an alternative answer.
Monday, December 3, 2012
Find the factorial of given number
The trick here is to realize that the limiting case is the number of times
five will be a factor of X!, as 5*2 = 10, and any time the number is
multiplied by 10, there will be an additional trailing zero. Due to the
abundance of even numbers, there are plenty of spare twos that are factors of
any number. The trick is that the number of trailing zeros in X! is the
number of times five divides into the number, plus the number of times 25
divides into the number, plus the number of times 125 divides into the number,
and so forth. (25 is 5*5, so when five is divided into the number, that still
leaves a single 5 remaining as a factor.)
Labels:
Factorial,
maths,
Numbers patterns
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment