Conclusion:
1.进位不仅仅加在两个数相加的时候,计算当前位向上进位也要考虑上一位的进位!!!!
代码:
#include<iostream>
#include<string>
using namespace std;
bool isRT(string s)
{
for (int i = 0, j = s.length() - 1; i < j; i++, j--)
{
if (s[i] != s[j]){
return false;
}
}
return true;
}
string operationss(string ss)
{
string fan = ss;
string result=ss;
int k = ss.length();
for (int i = k - 1; i >= 0; i--)
fan[k-i-1] = ss[i];
// cout << "逆转字符串为:" << fan << endl;
int cnt = 0;
for (int i = k - 1; i >= 0; i--)
{
char p = (cnt + ss[i] + fan[i] - '0' - '0') % 10 + '0';
result[i] = p;
// cout << "字符p等于:" <<p<< endl;
cnt = (ss[i] + fan[i] - '0' - '0'+cnt) / 10;
}
if (cnt != 0){ string stt(1, '0' + cnt); result = stt+result; }
//cout << "结果字符串为:" << result << endl;
return result;
}
int main()
{
string a;
int n;
cin >> a >> n;
int step = 0; int flag = 0;
while (step <n)
{
if (isRT(a)){ cout << a << endl; cout << step; flag = 1; break; }
else{
a=operationss(a);
step++;
}
}
if (flag != 1 && step==n){ cout << a << endl; cout << n; }
return 0;
}