# Check if number is palindrome or not in base B

Last Updated : 17 Mar, 2021

Given an integer N, the task is to check if

(N in base B) is palindrome or not.

Examples:

Input: N = 5, B = 2
Output: Yes
Explanation:
(5)10 = (101)2 which is palindrome. Therefore, the required output is Yes.
Input: N = 4, B = 2
Output: No

Approach: The problem can be solved by checking if the decimal value of the reverse of

is equal to N or not. Follow the steps below to solve the problem.

1. Initialize the variable, rev = 0 to store the reverse of N.
2. Extract the digits of

1. by N % B.
2. For each digit of

1. Update rev= rev * B + N % B
2. Finally, check if N is equal to rev or not

Below is the implementation of the above approach:

## C++

 `// C++ program to implement``// the above approach` `#include ``using` `namespace` `std;` `// Function to check if N in``// base B is palindrome or not``int` `checkPalindromeB(``int` `N, ``int` `B)``{``    ``// Stores the reverse of N``    ``int` `rev = 0;` `    ``// Stores the value of N``    ``int` `N1 = N;` `    ``// Extract all the digits of N``    ``while` `(N1) {``        ``// Generate its reverse``        ``rev = rev * B + N1 % B;``        ``N1 = N1 / B;``    ``}` `    ``return` `N == rev;``}` `// Driver Code``int` `main()``{``    ``int` `N = 5, B = 2;``    ``if` `(checkPalindromeB(N, B)) {``        ``cout << ``"Yes"``;``    ``}``    ``else` `{``        ``cout << ``"No"``;``    ``}``}`

## Java

 `// Java program to implement ``// the above approach ``class` `GFG{ ` `// Function to check if N in``// base B is palindrome or not``static` `boolean` `checkPalindromeB(``int` `N,``                                ``int` `B)``{``    ` `    ``// Stores the reverse of N``    ``int` `rev = ``0``;` `    ``// Stores the value of N``    ``int` `N1 = N;` `    ``// Extract all the digits of N``    ``while` `(N1 > ``0``) ``    ``{``        ` `        ``// Generate its reverse``        ``rev = rev * B + N1 % B;``        ``N1 = N1 / B;``    ``}``    ``return` `N == rev;``}` `// Driver code ``public` `static` `void` `main(String[] args) ``{ ``    ``int` `N = ``5``, B = ``2``;``    ` `    ``if` `(checkPalindromeB(N, B))``    ``{``        ``System.out.print(``"Yes"``);``    ``}``    ``else``    ``{``        ``System.out.print(``"No"``);``    ``}``} ``} ` `// This code is contributed by Dewanti `

## Python3

 `# Python3 program to implement ``# the above approach ` `# Function to check if N in``# base B is palindrome or not``def` `checkPalindromeB(N, B):` `    ``# Stores the reverse of N``    ``rev ``=` `0``;` `    ``# Stores the value of N``    ``N1 ``=` `N;` `    ``# Extract all the digits of N``    ``while` `(N1 > ``0``):` `        ``# Generate its reverse``        ``rev ``=` `rev ``*` `B ``+` `N1 ``%` `B;``        ``N1 ``=` `N1 ``/``/` `B;``    ` `    ``return` `N ``=``=` `rev;` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``N ``=` `5``; B ``=` `2``;` `    ``if` `(checkPalindromeB(N, B)):``        ``print``(``"Yes"``);``    ``else``:``        ``print``(``"No"``);` `# This code is contributed by Princi Singh`

## C#

 `// C# program to implement ``// the above approach ``using` `System;` `class` `GFG{ ` `// Function to check if N in``// base B is palindrome or not``static` `bool` `checkPalindromeB(``int` `N,``                             ``int` `B)``{``    ` `    ``// Stores the reverse of N``    ``int` `rev = 0;` `    ``// Stores the value of N``    ``int` `N1 = N;` `    ``// Extract all the digits of N``    ``while` `(N1 > 0) ``    ``{``        ` `        ``// Generate its reverse``        ``rev = rev * B + N1 % B;``        ``N1 = N1 / B;``    ``}``    ``return` `N == rev;``}` `// Driver code ``public` `static` `void` `Main(String[] args) ``{ ``    ``int` `N = 5, B = 2;``    ` `    ``if` `(checkPalindromeB(N, B))``    ``{``        ``Console.Write(``"Yes"``);``    ``}``    ``else``    ``{``        ``Console.Write(``"No"``);``    ``}``} ``} ` `// This code is contributed by Amit Katiyar `

## Javascript

 ``

Output:
`Yes`

Time Complexity:O(logBN)
Auxiliary Space:O(1)

Previous
Next