AcWing 1501. 回文数
原题链接
简单
作者:
eveer
,
2021-08-22 17:25:10
,
所有人可见
,
阅读 198
#include<bits/stdc++.h>
using namespace std;
bool is_number(vector<int> a)
{
int i=0,j=a.size()-1;
while(i<=j)
{
if(a[i]!=a[j])return false;
i++,j--;
}
return true;
}
vector<int> add(vector<int> a,vector<int> b)
{
vector<int>ans;
int t=0;
for(int i=0;i<a.size();i++)
{
t+=a[i]+b[i];
ans.push_back(t%10);
t/=10;
}
if(t)ans.push_back(t);
return ans;
}
int main()
{
vector<int>res;
string num;
int k;
cin>>num>>k;
for(int i=num.size()-1;i>=0;i--)
{
res.push_back(num[i]-'0');
}
int cnt=0;
while(!is_number(res)&&cnt<k)
{
vector<int>r;
r=res;
reverse(r.begin(),r.end());
res=add(res,r);
cnt++;
}
if(!is_number(res))
{
for(int i=res.size()-1;i>=0;i--)
{
printf("%d",res[i]);
}
printf("\n%d\n",k);
}
else
{
for(int i=res.size()-1;i>=0;i--)
{
printf("%d",res[i]);
}
printf("\n%d\n",cnt);
}
return 0;
}