Open In App

# Find nth Magic Number

A magic number is defined as a number which can be expressed as a power of 5 or sum of unique powers of 5. First few magic numbers are 5, 25, 30(5 + 25), 125, 130(125 + 5), ….
Write a function to find the nth Magic number.
Example:

Input: n = 2
Output: 25

Input: n = 5
Output: 130

Recommended Practice

If we notice carefully the magic numbers can be represented as 001, 010, 011, 100, 101, 110 etc, where 001 is 0*pow(5,3) + 0*pow(5,2) + 1*pow(5,1). So basically we need to add powers of 5 for each bit set in a given integer n.
Below is the implementation based on this idea.

Approach :

Step 1 : declare and assign a number for which you want to find the magic number.

Step 2 : assign a pow = 1, and ans = 0

Step 3 : use while loop to iterate each bit until ends (while n > 0)

Step 4 : inside loop, find last bit using & operation and  keep updating answer and  power as well

Step 5 : Once loop exit return answer

## C++

 // C++ program to find nth magic number#include using namespace std; // Function to find nth magic numberint nthMagicNo(int n){    int pow = 1, answer = 0;     // Go through every bit of n    while (n)    {       pow = pow*5;        // If last bit of n is set       if (n & 1)         answer += pow;        // proceed to next bit       n >>= 1;  // or n = n/2    }    return answer;} // Driver program to test above functionint main(){    int n = 5;    cout << "nth magic number is " << nthMagicNo(n) << endl;    return 0;}

## Java

 // Java program to find nth// magic numberimport java.io.*; class GFG{  // Function to find nth magic number  static int nthMagicNo(int n)  {     int pow = 1, answer = 0;       // Go through every bit of n     while (n != 0)     {       pow = pow*5;         // If last bit of n is set       if ((int)(n & 1) == 1)         answer += pow;         // proceed to next bit       // or n = n/2       n >>= 1;      }     return answer;  }    // Driver program to test  // above function  public static void main(String[] args)  {    int n = 5;    System.out.println("nth magic" +    " number is " + nthMagicNo(n));  }}  // This code is contributed by// prerna saini

## Python3

 # Python program to find nth magic number # Function to find nth magic numberdef nthMagicNo(n):     pow = 1    answer = 0     # Go through every bit of n    while (n):         pow = pow*5         # If last bit of n is set        if (n & 1):            answer += pow         # proceed to next bit        n >>= 1 # or n = n/2         return answer  # Driver program to test above functionn = 5print("nth magic number is", nthMagicNo(n)) # This code is contributed by# Smitha Dinesh Semwal

## C#

 // C# program to find nth// magic numberusing System; public class GFG{     // Function to find nth magic numberstatic int nthMagicNo(int n){    int pow = 1, answer = 0;     // Go through every bit of n    while (n != 0)    {        pow = pow * 5;         // If last bit of n is set        if ((int)(n & 1) == 1)            answer += pow;             // proceed to next bit        // or n = n/2        n >>= 1;    }    return answer;} // Driver Codepublic static void Main(){    int n = 5;    Console.WriteLine("nth magic" +    " number is "                       + nthMagicNo(n)); }} // This code is contributed by Sam007

## PHP

 >= 1; // or \$n = \$n/2    }    return \$answer;} // Driver Code\$n = 5;echo "nth magic number is ",       nthMagicNo(\$n), "\n"; // This code is contributed by Ajit.?>

## Javascript



Output :

nth magic number is 130

Complexity :

Time complexity : O(logN)

Auxiliary Space : O(1)

Thanks to manrajsingh for suggesting the above solution.