Question one: Given an integer n, how many 0 are there at the end of the factorial of n? For example n = ten, n! = 362800,n! There are two 0 at the end.
Question two: Ask N! The position of the lowest bit 1 in the binary representation.
Solution one of the problem one:
The simplest way is to put n! Figure out, you can know how many 0 at the end.
Solution two of problem one:
We think so, at the end of the 0 can be obtained from where, a multiple of 10, such as 10,20,100 .... Such, can contribute 0, there is 2 * 5 This can also get a 0, but we can find that 10 is actually from 5,
10 = 2 * 5,
20 = 4 * 5,
100 = 20 * 5
So, we can conclude, how many 0, just see how many of the n! factorization contains 5,. At this point, the successful transformation of the original problem into a more simple problem.
Using this principle, we propose two solutions to calculate the number of factor 5 in factorization:
1, the first method is very simple, is directly split 5 out of
int tot = 0; Number of factor 5
for (int i = 1;i <= n;i++)
{
int temp = i;
while (temp% 5 ==0)
{
tot++;
Temp/= 5;
}
}
2, the second method of tot = [N/5] + [n/5^2] + [n/5^3]+ ... See how much n divided by 5 is actually the number of factors that can be divisible by 5 in n!, and then each factor can contribute a 5, such as 26! , [26/5] = 5, there are 5,10,15,20,25 five can be divisible by 5. Then the factor divisible by 5^2 can contribute two 5, such as 25, so the number of factors to be divided by 5^2, and so on.
int tot = 0;
int c = 5;
while (c <= N)
{
Tot + = (tot/n);
C *= 5;
}
Question two:
We know that an integer division divided by 2 can be replaced by the right 1 bits, when a number can be divisible by 2, the lowest bit of the binary is 0, when the lowest bit is 1 is odd, not divisible by 2, so, we can draw a number can be divided by 2 how many times, it shows the number of binary lowest bit how many 0. In other words, this is the number of the 2 factor. And then there are:
The number of the number N factorial n! of the binary lowest bit 0 = [N/2] + [n/2^2] + [n/2 ^ 3]+ ....
The---of reading notes in programming Beauty "don't be intimidated by factorial."