Given an integer n, find the number of digits that appear in its factorial, where factorial is defined as, factorial(n) = 1*2*3*4……..*n and factorial(0) = 1
Input : n = 1 Output : 1 1! = 1 , hence number of digits is 1 Input : 5 Output : 3 5! = 120, i.e., 3 digits Input : 10 Output : 7 10! = 3628800, i.e., 7 digits
A naive solution would be to calculate the n! first and then calculate the number of digits present in it. However as the value for n! can be very large, it would become cumbersome to store them in a variable (Unless you’re working in python!) .
A better solution would be to use the useful property of logarithms to calculate the required answer.
We know, log(a*b) = log(a) + log(b) Therefore log( n! ) = log(1*2*3....... * n) = log(1) + log(2) + ........ +log(n) Now, observe that the floor value of log base 10 increased by 1, of any number, gives the number of digits present in that number. Hence, output would be : floor(log(n!)) + 1.
Below is a the implementation of the same.
1 3 7 199
In the next set, we’d see how to further optimize our approach and reduce the time complexity for the same program.
This article is contributed by Ashutosh Kumar .If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Count digits in a factorial | Set 2
- Smallest number with at least n digits in factorial
- Number of digits in N factorial to the power N
- Find sum of digits in factorial of a number
- Count of numbers between range having only non-zero digits whose sum of digits is N and number is divisible by M
- Count Divisors of Factorial
- Count factorial numbers in a given range
- Count trailing zeroes in factorial of a number
- Find the last digit when factorial of A divides factorial of B
- Count numbers with same first and last digits
- Count even and odd digits in an Integer
- Count of numbers from range [L, R] whose sum of digits is Y
- Given count of digits 1, 2, 3, 4, find the maximum sum possible
- Count digits in given number N which divide N
- Count total number of digits from 1 to n