未解之谜:
为啥to_string(int) 会报错
改用 atoi 和 stoi
字符串反转直接用了reverse
练习大数加法
string sub(string a,string b){
int l = a.length();
int up = 0; //进位数
int sum; //单个位求和
string s = ""; // 结果
for(int i=l-1; i>=0; i--){
sum = a[i] - '0' + b[i] - '0' + up; //求和,带上进位
up = sum / 10; //计算进位
sum = sum % 10; //去掉进位的数
s = char(sum + '0') + s; // 合并到结果串中
}
//注意不要放进循环中
if(up>0) s = char(up + '0' )+ s; //该判断在最结尾,如果还有进位,加上去,
retrun s;
}
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <string>
#include <cctype>
#include <vector>
#include <cmath>
using namespace std;
string a,b;
int times = 1;
int judge(string pan){
int l = pan.length();
for(int i=0; i<l/2; i++){
if(pan[i] == pan[l-1-i]) continue;
else{
return 0;
}
}
return 1;
}
string sub(string aa, string bb){
bb = aa;
reverse(bb.begin(),bb.end());
int up = 0,sum;
int l = aa.length();
string s = "";
for(int i= l-1; i>=0; i--){
sum = (aa[i] - '0') + (bb[i] - '0') + up;
up = sum / 10;
sum = sum % 10;
s = char(sum + '0') + s;
}
if(up > 0) s = char(up + '0' )+ s;
cout << aa << " + " << bb << " = " << s << endl;
return s;
}
int main(){
cin >> a;
if(judge(a) == 0){
while(times <= 10){
if(judge(a) == 1){
cout << a << " is a palindromic number.";
return 0;
}
else{
a = sub(a,b);
times = times + 1;
}
}
cout << "Not found in 10 iterations.";
}
else{
cout << a << " is a palindromic number.";
}
return 0;
}