大数加法,一遍AC,再无其他。
#include <bits/stdc++.h>
using namespace std;
struct bigNum
{
char s[1024];
int digit;
};
bigNum add(bigNum x)
{
bigNum y;
int temp,c=0;
for(int i=x.digit-1;i>=0;i--)
y.s[i]=x.s[x.digit-i-1];
y.digit=x.digit;
for(int i=x.digit-1;i>=0;i--)
{
temp=x.s[i]+y.s[i]-2*'0'+c;
if(temp>=10) c=1;
else c=0;
y.s[i]=temp%10+'0';
}
if(c)
{
for(int i=y.digit;i>0;i--)
y.s[i]=y.s[i-1];
y.s[0]='1';
y.digit++;
}
return y;
}
bool isPalindromic(bigNum x)
{
bool flag=true;
int i=0,j=x.digit-1;
while(i<j)
{
if(x.s[i]!=x.s[j]) flag=false;
i++;j--;
}
return flag;
}
int main(void)
{
bigNum a;
int k;
scanf("%s%d",a.s,&k);
a.digit=strlen(a.s);
int count=0;
while(!isPalindromic(a))
{
a=add(a);
count++;
if(count==k) break;
}
a.s[a.digit]='\0';
printf("%s\n%d",a.s,count);
}