Find the value of a number raised to its reverse

Last Updated : 30 Aug, 2025

Given a number n .The task is to find the number obtained when the number is raised to the power of its own reverse.

Examples:

 Input : n = 2
Output: 4
Explanation: Number 2 raised to the power of its reverse 2 gives 4.

Input : n = 10
Output: 10
Explanation: 1001 gives us the result as 10.

[Naive Approach] - Multiply One by One - O(r) Time and O(1) Space

The idea is to traverse a loop from 1 to r (reverse) and multiply the result (initialized to 1) with n in each iteration.

Follow the below given steps:

  • Create a variable res and initialize it to 1 to store the final result.
  • Then, start a loop from 1 and it goes till r.
    • Multiply the variable res with n.
  • Return the result res .
C++
#include <iostream>
using namespace std;

// Function to reverse the digits of a number n
int reverse(int n) {
    int rev = 0;
    while (n > 0) {
        rev = rev * 10 + n % 10;
        n /= 10;
    }
    return rev;
}

// Iterative function to calculate x^r using a for loop
int power(int x, int r) {
    int result = 1;
    for (int i = 0; i < r; i++) {
        result *= x;
    }
    return result;
}

int main() {
    int n = 10;          // Original number
    int r = reverse(n);  // Reverse of n

    cout << power(n, r) << endl;

    return 0;
}
Java
public class GfG {

     // Function to reverse the digits of a number n
    static int reverse(int n) {
        int rev = 0;
        while (n > 0) {
            rev = rev * 10 + n % 10;
            n /= 10;
        }
        return rev;
    }

    // Iterative function to calculate x^r using a for loop
    static int power(int x, int r) {
        int result = 1;
        for (int i = 0; i < r; i++) {
            result *= x;
        }
        return result;
    }

    public static void main(String[] args) {
        int n = 10;              // Original number
        int r = reverse(n);      // Reverse of n

        System.out.println(power(n, r));
    }
}
Python
# Function to reverse the digits of a number n
def reverse(n):
    rev = 0
    while n > 0:
        rev = rev * 10 + n % 10
        n //= 10
    return rev

# Iterative function to calculate x^r using a for loop
def power(x, r):
    result = 1
    for _ in range(r):
        result *= x
    return result

if __name__ == "__main__":
    n = 10           # Original number
    r = reverse(n)   # Reverse of n
    
    print(power(n, r))
C#
using System;

class GFG
{
    // Function to reverse the digits of a number n
    static int Reverse(int n)
    {
        int rev = 0;
        while (n > 0)
        {
            rev = rev * 10 + n % 10;
            n /= 10;
        }
        return rev;
    }

    // Iterative function to calculate x^r using a for loop
    static int Power(int x, int r)
    {
        int result = 1;
        for (int i = 0; i < r; i++)
        {
            result *= x;
        }
        return result;
    }

    static void Main()
    {
        int n = 10;          // Original number
        int r = Reverse(n);  // Reverse of n

        Console.WriteLine(Power(n, r));
    }
}
JavaScript
// Function to reverse the digits of a number n
function reverse(n) {
    let rev = 0;
    while (n > 0) {
        rev = rev * 10 + n % 10;
        n = Math.floor(n / 10);
    }
    return rev;
}

// Iterative function to calculate x^r using a for loop
function power(x, r) {
    let result = 1;
    for (let i = 0; i < r; i++) {
        result *= x;
    }
    return result;
}

// driver code
let n = 10;            // Original number
let r = reverse(n);    // Reverse of n

console.log(power(n, r));

Output
10

[Recursive Approach]: Calculate Power Using Recursion – O(r) Time and O(r) Space

To calculate n^r using recursion, we use the relation:
power(x, r) = x * power(x, r - 1), with the base case power(x, 0) = 1.
This approach makes r recursive calls, resulting in O(r) time and space complexity.

C++
#include <iostream>
using namespace std;

// Function to reverse the digits of a number n
int reverse(int n) {
    int rev = 0;
    while (n > 0) {
        rev = rev * 10 + n % 10;
        n /= 10;
    }
    return rev;
}

// Recursive function to calculate x^r
int power(int x, int r) {
    if (r == 0)
        return 1;
    return x * power(x, r - 1);
}

int main() {
    int n = 10;          // Original number
    int r = reverse(n);  // Reverse of n

    cout << power(n, r) << endl;

    return 0;
}
Java
import java.io.*;

class GFG {
   // Function to reverse the digits of a number n
    static int reverse(int n) {
        int rev = 0;
        while (n > 0) {
            rev = rev * 10 + n % 10;
            n /= 10;
        }
        return rev;
    }

    // Recursive function to calculate x^r
    static int power(int x, int r) {
        if (r == 0)
            return 1;
        return x * power(x, r - 1);
    }

    public static void main(String[] args) {
        int n = 10;               // Original number
        int r = reverse(n);      // Reverse of n

        System.out.println(power(n, r));
    }
}
Python
# Function to reverse the digits of a number n
def reverse(n):
    rev = 0
    while n > 0:
        rev = rev * 10 + n % 10
        n //= 10
    return rev

# Recursive function to calculate x^r
def power(x, r):
    if r == 0:
        return 1
    return x * power(x, r - 1)

if __name__ == "__main__":
    n = 10            # Original number
    r = reverse(n)    # Reverse of n
    
    print(power(n, r))
C#
using System;

public class GFG{

     // Function to reverse the digits of a number n
    static int Reverse(int n)
    {
        int rev = 0;
        while (n > 0)
        {
            rev = rev * 10 + n % 10;
            n /= 10;
        }
        return rev;
    }

    // Recursive function to calculate x^r
    static int Power(int x, int r)
    {
        if (r == 0)
            return 1;
        return x * Power(x, r - 1);
    }

    static void Main()
    {
        int n = 10;             // Original number
        int r = Reverse(n);     // Reverse of n

        Console.WriteLine(Power(n, r));
    }
}
JavaScript
// Function to reverse the digits of a number n
function reverse(n) {
    let rev = 0;
    while (n > 0) {
        rev = rev * 10 + n % 10;
        n = Math.floor(n / 10);
    }
    return rev;
}

// Recursive function to calculate x^r
function power(x, r) {
    if (r === 0)
        return 1;
    return x * power(x, r - 1);
}

// driver code
let n = 10;           // Original number
let r = reverse(n);   // Reverse of n

console.log(power(n, r));
PHP
<?php

// Function to reverse the digits of a number n
function reverse($n) {
    $rev = 0;
    while ($n > 0) {
        $rev = $rev * 10 + $n % 10;
        $n = intdiv($n, 10);
    }
    return $rev;
}

// Recursive function to calculate x^r
function power($x, $r) {
    if ($r == 0)
        return 1;
    return $x * power($x, $r - 1);
}

$n = 10;              // Original number
$r = reverse($n);     // Reverse of n

echo  power($n, $r) . "\n";
?>

Output
10

[Expected Approach] - Using Bit Manipulation - O(log r) Time and O(1) Space

The idea is to use binary exponentiation (also known as “exponentiation by squaring”) to compute the result in logarithmic time.

  • Every number can be written as the sum of powers of 2
  • Traverse through all the bits of r from LSB (Least Significant Bit) to MSB (Most Significant Bit) in O(log n) time. In each iteration, make the multiplier x as square of x.,
C++
#include <iostream>
using namespace std;

// Function to reverse the digits of a number
int reverse(int n) {

    int rev = 0;

    while (n > 0) {
        rev = rev * 10 + n % 10;
        n /= 10;
    }

    return rev;
}

// Function to compute power using binary exponentiation
int power(int n, int r) {
    
   
    int res = 1;

    int x = n;

    while (r > 0) {

        if (r & 1) {
            res = res * x;
        }

        x = x * x;

        r >>= 1;
    }

    return res;
}

int main() {

    int n = 10;

    int r = reverse(n);

    cout << power(n, r);

    return 0;
}
Java
import java.util.*;

public class GFG{

    // Function to reverse the digits of a number
    static int reverse(int n) {
        int rev = 0;
        while (n > 0) {
            rev = rev * 10 + n % 10;
            n /= 10;
        }
        return rev;
    }

    // Function to compute power using binary exponentiation
    static int power(int n, int r) {
        int res = 1;
        int x = n;
        while (r > 0) {
            if ((r & 1) == 1) {
                res = res * x;
            }
            x = x * x;
            r >>= 1;
        }
        return res;
    }

    public static void main(String[] args) {
        int n = 10;
        int r = reverse(n);
        System.out.println(power(n, r));
    }
}
Python
# Function to reverse the digits of a number
def reverse(n):
    rev = 0
    while n > 0:
        rev = rev * 10 + n % 10
        n //= 10
    return rev

# Function to compute power using binary exponentiation
def power(n, r):
    res = 1
    x = n
    while r > 0:
        if r & 1:
            res = res * x
        x = x * x
        r >>= 1
    return res

if __name__=="__main__":
    n = 10
    r = reverse(n)
    print(power(n, r))
C#
using System;

class GFG {

    // Function to reverse the digits of a number
    static int reverse(int n) {
        int rev = 0;
        while (n > 0) {
            rev = rev * 10 + n % 10;
            n /= 10;
        }
        return rev;
    }

    // Function to compute power using binary exponentiation
    static int power(int n, int r) {
        int res = 1;
        int x = n;
        while (r > 0) {
            if ((r & 1) == 1) {
                res = res * x;
            }
            x = x * x;
            r >>= 1;
        }
        return res;
    }

    static void Main() {
        int n = 10;
        int r = reverse(n);
        Console.WriteLine(power(n, r));
    }
}
JavaScript
"use strict";

// Function to reverse the digits of a number
function reverse(n) {
    let rev = 0;
    while (n > 0) {
        rev = rev * 10 + n % 10;
        n = Math.floor(n / 10);
    }
    return rev;
}

// Function to compute power using binary exponentiation
function power(n, r) {
    let res = 1;
    let x = n;
    while (r > 0) {
        if (r & 1) {
            res = res * x;
        }
        x = x * x;
        r >>= 1;
    }
    return res;
}

// driver code
let n = 10;
let r = reverse(n);
console.log(power(n, r));

Output
10
Comment