#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string sum(string a, string b)
{
if(a.size() < b.size())
{
string tmp = b;
b = a;
a = tmp;
}
int len = a.size() - b.size();
for(int i = 0; i < len; i++)
b = '0' + b;
bool flag = false;
string ans;
for(int i = a.size()-1; i >= 0; i--)
{
int tmp = a[i]+b[i]-'0'-'0'+flag;
if(tmp >= 10)
{
tmp -= 10;
flag = true;
}
else
flag = false;
ans = (char)(tmp+'0')+ans;
}
if(flag)
ans = '1' + ans;
return ans;
}
bool isPal(string str)
{
for(int i = 0; i < str.size()/2; i++)
if(str[i] != str[str.size()-1-i])
return false;
return true;
}
int main()
{
string str, restr;
int k;
cin >> str >> k;
if(isPal(str))
{
cout << str << endl;
cout << "0" << endl;
}
else
{
restr = str;
reverse(restr.begin(), restr.end());
string tmp;
int i;
for(i = 1; i <= k; i++)
{
tmp = sum(str, restr);
if(isPal(tmp))
break;
restr = str = tmp;
reverse(restr.begin(), restr.end());
}
cout << tmp << endl;
if(i > k)
cout << k << endl;
else
cout << i << endl;
}
return 0;
}
PAT---1024 Palindromic Number(大数加法+回文)
猜你喜欢
转载自blog.csdn.net/mch2869253130/article/details/88095515
今日推荐
周排行