Java
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1 = sc.next();
if (isPalindromic(s1)) {
System.out.println(s1 + " is a palindromic number.");
} else {
int cnt = 0;
boolean flag = false;
while (cnt < 10) {
String s2 = new StringBuilder(s1).reverse().toString();
BigInteger a = new BigInteger(s1);
BigInteger b = new BigInteger(s2);
BigInteger c = a.add(b);
String s3 = c.toString();
System.out.println(s1 + " + " + s2 + " = " + s3);
if (isPalindromic(s3)) {
System.out.println(s3 + " is a palindromic number.");
flag = true;
break;
}
cnt++;
s1 = s3;
}
if (!flag) {
System.out.println("Not found in 10 iterations.");
}
}
sc.close();
}
static boolean isPalindromic(String s) {
int len = s.length();
for (int i = 0; i < len / 2; i++) {
if (s.charAt(i) != s.charAt(len - 1 - i)) {
return false;
}
}
return true;
}
}
C++
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct BigN {
int d[1010];
int len;
BigN() {
memset(d, 0, sizeof d);
len = 0;
}
};
void init(BigN &a, string s) {
for (int i = 0; i < s.size(); ++i)
a.d[a.len++] = s[s.size() - 1 - i] - '0';
}
BigN add(BigN &a, BigN &b) {
BigN c;
int carry = 0;
for (int i = 0; i < a.len || i < b.len; ++i) {
carry += a.d[i] + b.d[i];
c.d[c.len++] = carry % 10;
carry /= 10;
}
if (carry) c.d[c.len++] = carry;
return c;
}
bool check(string s) {
for (int i = 0; i < s.size(); ++i)
if (s[i] != s[s.size() - 1 - i]) return false;
return true;
}
int main() {
string s1;
cin >> s1;
if (check(s1)) cout << s1 << " is a palindromic number." << endl;
else {
int cnt = 0;
bool flag = false;
while (cnt < 10) {
string s2 = s1, s3;
reverse(s2.begin(), s2.end());
BigN a, b, c;
init(a, s1);
init(b, s2);
c = add(a, b);
for (int i = c.len - 1; i >= 0; --i)
s3 += to_string(c.d[i]);
cout << s1 << " + " << s2 << " = " << s3 << endl;
if (check(s3)) {
cout << s3 << " is a palindromic number." << endl;
flag = true;
break;
}
cnt++;
s1 = s3;
}
if (!flag) cout << "Not found in 10 iterations." << endl;
}
return 0;
}