Problem Statement: Given an integer n and base B, the task is to find the length of n! in base B.
Sample Problem Link: http://lightoj.com/volume_showproblem.php?problem=1045
In this problem set you can use Kamnestsky's Algorithm
Approach:
In order to solve the problem we use Kamenetskyβs formula which approximates the number of digits in a factorial:
f(x) = log10( ((n/e)^n) * sqrt(2*pi*n))
The number of digits in n to the base b is given by-
logb(n) = log10(n) / log10(b)
Hence, by using properties of logarithms, the number of digits of factorial in base b can be obtained by -
f(x) = ( n* log10(( n/ e)) + log10(2*pi*n)/2 ) / log10(b)
This approach can deal with large inputs that can be accommodated in a 32-bit integer and even beyond that!
Solve Link: https://github.com/Remonhasan/algorithm/blob/master/Kamenetsky%20-Algorithm.cpp
Top comments (0)