The reverse and add function starts 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.
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 : 195 Output : 9339 Input : 265 Output: 45254 Input : 196 Output : No palindrome exist
C++
// C++ Program to implement reverse and add function #include<bits/stdc++.h> using namespace std; /* Iterative function to reverse digits of num*/ long long reversDigits( 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 he number is palindrome or not */ bool isPalindrome( long long num) { return (reversDigits(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 = reversDigits(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
// Java Program to implement reverse and add function public class ReverseAdd { /* Iterative function to reverse digits of num*/ long reversDigits( 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 (reversDigits(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 = reversDigits(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
#Python Program to implement reverse and add function # Iterative function to reverse digits of num def reversDigits(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 (reversDigits(num) = = num) # Reverse and Add Function def ReverseandAdd(num): rev_num = 0 while (num < = 4294967295 ): # Reversing the digits of the number rev_num = reversDigits(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#
// C# Program to implement reverse and add function using System; class GFG { /* Iterative function to reverse digits of num*/ static long reversDigits( 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 (reversDigits(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 = reversDigits(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 |
PHP
<?php // PHP Program to implement reverse and add function /* Iterative function to reverse digits of num*/ function reversDigits( $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 (reversDigits( $num ) == $num ); } /* Reverse and Add Function */ function ReverseandAdd( $num ) { $rev_num = 0; while ( $num <= 4294967295) { // Reversing the digits of the number $rev_num = reversDigits( $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
References: https://app.assembla.com/spaces/AASU_Fall2008_ProgrammingTeam/wiki
This article is contributed by Rahul Agrawal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.