本来用int直接加,测试点5.6.7.8过不了。改为long long int,并用大整数加法后过。
#include <iostream>
#include <vector>
using namespace std;
vector<int> A1(vector <int>&s,long long int n)
{
while (n)
{
s.push_back(n % 10);
n = n / 10;
}
return s;
}
void add(vector <int>&a)
{
int i, j;
int sum = 0;
vector<int>b,n;//a为颠倒排序,b为正常排序
for (i = a.size() - 1; i >= 0; i--)
{
b.push_back(a[i]);
}
for (i = b.size() - 1; i >= 0; i--)
{
sum = a[i] + b[i];
n.push_back(sum % 10);
if(i>0)
b[i - 1] += sum / 10;
}
if (sum / 10)
n.push_back(sum / 10);
vector<int>().swap(a);
for (i = 0; i <n.size(); i++)//更新a
{
a.push_back(n[i]);
}
}
int Judge(vector<int>s)
{
int i, j;
for (i = 0, j = s.size() - 1; i < j; i++, j--)
{
if (s[i] != s[j])
return 0;
}
return 1;
}
int main()
{
long long int n;
int k;
int i, count = 0;
cin >> n >> k;
vector<int>s;
A1(s,n);
while (!Judge(s) && count < k)
{
add(s);
count++;
}
for (i = s.size() - 1; i >= 0; i--)
cout << s[i];
if (s.size() == 0)cout << 0;
cout << endl<<count;
system("pause");
return 0;
}