DEV Community

Cover image for Kamenetsky's Algorithm
Remon Hasan
Remon Hasan

Posted on

1

Kamenetsky's Algorithm

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)

Heroku

This site is powered by Heroku

Heroku was created by developers, for developers. Get started today and find out why Heroku has been the platform of choice for brands like DEV for over a decade.

Sign Up

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay