可用3个vector来进行处理,先将输入的数字都压入到第1第2个vector中,从i=0到K循环判断是否为对称数,如果不是对称数则将其与倒转数相加,并将得到的每一位数加入到第三个vector的头部,并将新的第三个vector重新赋值给第一第二,直到该数为对称数或i==k结束循环。
ac代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<stack>
#define eps 10000000
#include<queue>
#include<map>
#include<set>
using namespace std;
int main()
{
vector<int> v1;
vector<int> v2;
vector<int> v3;
vector<int> v4;
char d[15];
cin>>d;
for(int i=0;i<strlen(d);i++)
{
v2.push_back(d[i]-'0');
v1.push_back(d[i]-'0');
}
int k;
cin>>k;
//cout<<k<<endl;
//cout<<v1.size()<<endl;
for(int i=0;i<=k;i++)
{
if(i==k)
{
for(int i=0;i<v1.size();i++)
{
cout<<v1[i];
}
cout<<endl;
cout<<i<<endl;
break;
}
int flag=0;
for(int j=0;j<v1.size();j++)
{
//cout<<v1[j]<<" "<<v2[v1.size()-j-1]<<endl;
if(v1[j]!=v2[v1.size()-j-1])
{
flag=1;
break;
}
}
//cout<<flag<<endl;
if(flag==0)
{
for(int j=0;j<v1.size();j++)
{
cout<<v1[j];
}
cout<<endl;
cout<<i<<endl;
break;
}
else
{
int jinwei=0;
int dd=v1.size();
for(int j=0;j<dd;j++)
{
int sum=v1.back()+v2.front()+jinwei;
v1.pop_back();
v2.erase(v2.begin());
if(sum>=10)
{
v3.insert(v3.begin(),sum-10);
jinwei=1;
}
else
{
v3.insert(v3.begin(),sum);
jinwei=0;
}
}
if(jinwei==1)
{
v3.insert(v3.begin(),1);
}
v1=v3;
v2=v3;
v3.clear();
}
}
}