和1023 一样 long long照样爆,自己写加法函数吧~~~~
#include <iostream>
#include <string>
#include <vector>
#include <stack>
using namespace std;
string N;
int K;
int char2int(char c) {
return int(c - '0');
}
char int2char(int n) {
return char('0' + n);
}
bool isPal(string s) {
int len = s.size();
for (int i = 0; i < len / 2; i++) {
if (s[i] != s[len - i - 1])
return false;
}
return true;
}
string Add(string s) {
int len = s.size();
// cout << "len " << len << endl;
int carry = 0, digit = 0, sum = 0;
string add;
stack <char> st;
for (int i = len -1 ; i >= 0 ; i--) {
sum = char2int(s[i]) + char2int(s[len - i - 1]) + carry;
// cout << sum << endl;
digit = sum % 10;
carry = sum / 10;
// cout << "digit " << digit << " carry " << carry << endl;
st.push(int2char(digit));
}
if (carry != 0) {
st.push(int2char(carry));
}
while (!st.empty()) {
add.push_back(st.top());
st.pop();
}
// cout << add << endl;
return add;
}
int main() {
cin >> N >> K;
// cout << N << " " << K << endl;
int i = 0;
for (i = 0; i < K; i++) {
if (isPal(N)) {
break;
}
else {
N = Add(N);
// cout << N << endl;
}
}
cout << N << endl;
cout << i << endl;
system("pause");
return 0;
}