#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool is_palindromic(string s)
{
int i = 0, j = s.length() - 1;
while (i < j)
{
if (s[i] != s[j])
return false;
i++;
j--;
}
return true;
}
string add_reverse(string s)
{
string res, rev = s;
int len = s.length();
reverse(rev.begin(), rev.end());
int carry = 0;
for (int i = len - 1; i >= 0; i--)
{
int tmp = s[i] - '0' + rev[i] - '0' + carry;
res += tmp % 10 + '0';
carry = tmp / 10;
}
if (carry == 1)
res += '1';
reverse(res.begin(), res.end());
return res;
}
int main()
{
string n;
int k;
cin >> n >> k;
int cnt = 0;
while (!is_palindromic(n) && cnt < k)
{
n = add_reverse(n);
cnt++;
}
cout << n << endl << cnt << endl;
return 0;
}
这个题目用long long都拿不能全过,必须要用字符串。
PAT (Advanced) 1024. Palindromic Number (25)
最新推荐文章于 2022-02-03 12:50:03 发布