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: 9339Input: N = 265
Output: 45254Input: 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++ Program to implement reverse and add function #include <bits/stdc++.h> using namespace std;
/* Iterative function to reverse digits of num*/ 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;
} /* Function to check whether the number is palindrome or not */ bool isPalindrome( long long num)
{ return (reverseDigits(num) == num);
} /* Reverse and Add Function */ void ReverseandAdd( long long num)
{ long long rev_num = 0;
while (num <= 4294967295) {
// Reversing the digits of the number
rev_num = reverseDigits(num);
// Adding the reversed number
// with the original
num
= num + rev_num;
// Checking whether the number
// is palindrome or not
if (isPalindrome(num)) {
printf ( "%lld\n" , num);
break ;
}
else if (num > 4294967295) {
printf ( "No palindrome exist" );
}
}
} // Driver Program int main()
{ ReverseandAdd(195);
ReverseandAdd(265);
return 0;
} |
// Java Program to implement reverse and add function public class ReverseAdd {
/* Iterative function to reverse digits of num*/
long reverseDigits( long num)
{
long rev_num = 0 ;
while (num > 0 ) {
rev_num = rev_num * 10 + num % 10 ;
num = num / 10 ;
}
return rev_num;
}
/* Function to check whether he number is
palindrome or not */
boolean isPalindrome( long num)
{
return (reverseDigits(num) == num);
}
/* Reverse and Add Function */
void ReverseandAdd( long num)
{
long rev_num = 0 ;
while (num <= 4294967295l) {
// Reversing the digits of the number
rev_num = reverseDigits(num);
// Adding the reversed number
// with the original
num
= num + rev_num;
// Checking whether the number
// is palindrome or not
if (isPalindrome(num)) {
System.out.println(num);
break ;
}
else if (num > 4294967295l) {
System.out.println( "No palindrome exist" );
}
}
}
// Main method
public static void main(String[] args)
{
ReverseAdd ob = new ReverseAdd();
ob.ReverseandAdd(195l);
ob.ReverseandAdd(265l);
}
} |
# Python Program to implement reverse and add function # Iterative function to reverse digits of num def reverseDigits(num):
rev_num = 0
while (num > 0 ):
rev_num = rev_num * 10 + num % 10
num = num / / 10
return rev_num
# Function to check whether # the number is palindrome or not def isPalindrome(num):
return (reverseDigits(num) = = num)
# Reverse and Add Function def ReverseandAdd(num):
rev_num = 0
while (num < = 4294967295 ):
# Reversing the digits of the number
rev_num = reverseDigits(num)
# Adding the reversed number
# with the original
num = num + rev_num
# Checking whether the number
# is palindrome or not
if (isPalindrome(num)):
print (num)
break
else :
if (num > 4294967295 ):
print ( "No palindrome exist" )
# Driver Code ReverseandAdd( 195 )
ReverseandAdd( 265 )
|
// C# Program to implement reverse and add function using System;
class GFG {
/* Iterative function to reverse digits of num*/
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;
}
/* Function to check whether he number is
palindrome or not */
static bool isPalindrome( long num)
{
return (reverseDigits(num) == num);
}
/* Reverse and Add Function */
static void ReverseandAdd( long num)
{
long rev_num = 0;
while (num <= 4294967295) {
// Reversing the digits of the number
rev_num = reverseDigits(num);
// Adding the reversed number
// with the original
num = num + rev_num;
// Checking whether the number
// is palindrome or not
if (isPalindrome(num)) {
Console.WriteLine(num);
break ;
}
else if (num > 4294967295) {
Console.WriteLine( "No palindrome exist" );
}
}
}
// Driver code
public static void Main()
{
ReverseandAdd(195);
ReverseandAdd(265);
}
} // This code is contributed by chandan_jnu |
<script> // Javascript program to implement // reverse and add function // Iterative function to reverse digits of num 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 to check whether he number // is palindrome or not function isPalindrome(num)
{ return (reverseDigits(num) == num);
} // Reverse and Add Function function ReverseandAdd(num)
{ let rev_num = 0;
while (num <= 4294967295)
{
// Reversing the digits of the number
rev_num = reverseDigits(num);
// Adding the reversed number
// with the original
num = num + rev_num;
// Checking whether the number
// is palindrome or not
if (isPalindrome(num))
{
document.write(num + "</br>" );
break ;
}
else if (num > 4294967295)
{
document.write( "No palindrome exist" +
"</br>" );
}
}
} // Driver code ReverseandAdd(195); ReverseandAdd(265); // This code is contributed by rameshtravel07 </script> |
<?php // PHP Program to implement reverse and add function /* Iterative function to reverse digits of num*/ function reverseDigits( $num )
{ $rev_num = 0;
while ( $num > 0)
{
$rev_num = $rev_num * 10 + $num % 10;
$num = (int)( $num / 10);
}
return $rev_num ;
} /* Function to check whether he number is palindrome or not */
function isPalindrome( $num )
{ return (reverseDigits( $num ) == $num );
} /* Reverse and Add Function */ function ReverseandAdd( $num )
{ $rev_num = 0;
while ( $num <= 4294967295)
{
// Reversing the digits of the number
$rev_num = reverseDigits( $num );
// Adding the reversed number with
// the original
$num = $num + $rev_num ;
// Checking whether the number is
// palindrome or not
if (isPalindrome( $num ))
{
print ( $num . "\n" );
break ;
}
else if ( $num > 4294967295)
{
print ( "No palindrome exist" );
}
}
} // Driver Code ReverseandAdd(195); ReverseandAdd(265); // This code is contributed by chandan_jnu ?> |
9339 45254
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.