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
?>
Output
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.