题目
思路
一道字符串处理+长整数加法+回文串判断的综合题
代码
#include <iostream>
#include <vector>
#include <algorithm>
#include <string.h>
using namespace std;
bool Judge(string num) {
int k, i, j;
if (num.length() % 2 != 0) {
k = num.length() / 2;
i = j = k;
}
else {
k = num.length() / 2 - 1;
i = k;
j = k + 1;
}
while (i >= 0 && j <= num.length() - 1) {
if (num[i] != num[j]) return false;
i--, j++;
}
return true;
}
string Add(string num1, string num2) {
string str = "";
int i = 0, j = 0;
int carry = 0;
for (int i = num1.length() - 1; i >= 0; --i) {
str += ((int)(num1[i]-'0') + (int)(num2[i]-'0') + carry) % 10 + '0';
carry = ((int)(num1[i] - '0') + (int)(num2[i] - '0') + carry) / 10;
}
if (carry > 0)
str += carry + '0';
reverse(str.begin(), str.end());
return str;
}
int main()
{
string num;
cin >> num;
if (num == "0") {
cout << num << " is a palindromic number.";
return 0;
}
for (int i = 0; i < 10; ++i) {
string num1 = num;
cout << num << " + ";
reverse(num.begin(), num.end());
cout << num << " = ";
num = Add(num1, num);
cout << num << endl;
if (Judge(num)) {
cout << num << " is a palindromic number.";
return 0;
}
}
cout << "Not found in 10 iterations." ;
return 0;
}