反向和加法函数以数字开头,反转其数字并将反向添加到原始字符上。如果总和不是回文,请重复此过程直至完成。
编写一个程序,该程序需要数字并给出产生的回文(如果存在)。如果进行了1,000次以上的迭代(加法)或得出的回文率大于4,294,967,295,则假定给定数量的回文不存在。
例子:
Input : 195
Output : 9339
Input : 265
Output: 45254
Input : 196
Output : No palindrome exist
C++
// C++ Program to implement reverse and add function
#include
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
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
?>
输出:
9339
45254
参考:https://app.assembla.com/spaces/AASU_Fall2008_ProgrammingTeam/wiki