Reverse and Add given number repeatedly to get a Palindrome number
Last Updated :
31 Oct, 2023
Write a program that takes number and gives the resulting palindrome (if one exists). If it took more than 1, 000 iterations (additions) or yield a palindrome that is greater than 4, 294, 967, 295, assume that no palindrome exist for the given number.
Examples:
Input: N = 195
Output: 9339
Input: N = 265
Output: 45254
Input: N = 196
Output: No palindrome exist
Approach: Create a reverse and add function to start with a number, reverses its digits, and adds the reverse to the original. If the sum is not a palindrome, repeat this procedure until it does.
C++
#include <bits/stdc++.h>
using namespace std;
long long reverseDigits( long long num)
{
long long rev_num = 0;
while (num > 0) {
rev_num = rev_num * 10 + num % 10;
num = num / 10;
}
return rev_num;
}
bool isPalindrome( long long num)
{
return (reverseDigits(num) == num);
}
void ReverseandAdd( long long num)
{
long long rev_num = 0;
while (num <= 4294967295) {
rev_num = reverseDigits(num);
num
= num + rev_num;
if (isPalindrome(num)) {
printf ( "%lld\n" , num);
break ;
}
else if (num > 4294967295) {
printf ( "No palindrome exist" );
}
}
}
int main()
{
ReverseandAdd(195);
ReverseandAdd(265);
return 0;
}
|
Java
public class ReverseAdd {
long reverseDigits( long num)
{
long rev_num = 0 ;
while (num > 0 ) {
rev_num = rev_num * 10 + num % 10 ;
num = num / 10 ;
}
return rev_num;
}
boolean isPalindrome( long num)
{
return (reverseDigits(num) == num);
}
void ReverseandAdd( long num)
{
long rev_num = 0 ;
while (num <= 4294967295l) {
rev_num = reverseDigits(num);
num
= num + rev_num;
if (isPalindrome(num)) {
System.out.println(num);
break ;
}
else if (num > 4294967295l) {
System.out.println( "No palindrome exist" );
}
}
}
public static void main(String[] args)
{
ReverseAdd ob = new ReverseAdd();
ob.ReverseandAdd(195l);
ob.ReverseandAdd(265l);
}
}
|
Python3
def reverseDigits(num):
rev_num = 0
while (num > 0 ):
rev_num = rev_num * 10 + num % 10
num = num / / 10
return rev_num
def isPalindrome(num):
return (reverseDigits(num) = = num)
def ReverseandAdd(num):
rev_num = 0
while (num < = 4294967295 ):
rev_num = reverseDigits(num)
num = num + rev_num
if (isPalindrome(num)):
print (num)
break
else :
if (num > 4294967295 ):
print ( "No palindrome exist" )
ReverseandAdd( 195 )
ReverseandAdd( 265 )
|
C#
using System;
class GFG {
static long reverseDigits( long num)
{
long rev_num = 0;
while (num > 0) {
rev_num = rev_num * 10 + num % 10;
num = num / 10;
}
return rev_num;
}
static bool isPalindrome( long num)
{
return (reverseDigits(num) == num);
}
static void ReverseandAdd( long num)
{
long rev_num = 0;
while (num <= 4294967295) {
rev_num = reverseDigits(num);
num = num + rev_num;
if (isPalindrome(num)) {
Console.WriteLine(num);
break ;
}
else if (num > 4294967295) {
Console.WriteLine( "No palindrome exist" );
}
}
}
public static void Main()
{
ReverseandAdd(195);
ReverseandAdd(265);
}
}
|
Javascript
<script>
function reverseDigits(num)
{
let rev_num = 0;
while (num > 0)
{
rev_num = rev_num * 10 + num % 10;
num = parseInt(num / 10, 10);
}
return rev_num;
}
function isPalindrome(num)
{
return (reverseDigits(num) == num);
}
function ReverseandAdd(num)
{
let rev_num = 0;
while (num <= 4294967295)
{
rev_num = reverseDigits(num);
num = num + rev_num;
if (isPalindrome(num))
{
document.write(num + "</br>" );
break ;
}
else if (num > 4294967295)
{
document.write( "No palindrome exist" +
"</br>" );
}
}
}
ReverseandAdd(195);
ReverseandAdd(265);
</script>
|
PHP
<?php
function reverseDigits( $num )
{
$rev_num = 0;
while ( $num > 0)
{
$rev_num = $rev_num * 10 + $num % 10;
$num = (int)( $num / 10);
}
return $rev_num ;
}
function isPalindrome( $num )
{
return (reverseDigits( $num ) == $num );
}
function ReverseandAdd( $num )
{
$rev_num = 0;
while ( $num <= 4294967295)
{
$rev_num = reverseDigits( $num );
$num = $num + $rev_num ;
if (isPalindrome( $num ))
{
print ( $num . "\n" );
break ;
}
else if ( $num > 4294967295)
{
print ( "No palindrome exist" );
}
}
}
ReverseandAdd(195);
ReverseandAdd(265);
?>
|
Time complexity: O(log N) for a given input
Auxiliary space: O(1) because constant variables have been used
References: https://app.assembla.com/spaces/AASU_Fall2008_ProgrammingTeam/wiki
This article is contributed by Rahul Agrawal.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...