注意做变换之前检查一遍输入的数是否已经符合要求了。
注意单位数的都是符合要求的。
#include<cstdio>
#include<vector>
#include<string>
#include<iostream>
#include<queue>
#include<set>
#include<algorithm>
#define maxn 22
using namespace std;
string reverse_add(string rev) {
int in = 0;
string str;
for (int i = 0; i < rev.size(); i++) {
int a = rev[rev.size() - 1 - i] + rev[i] + in - '0' - '0';
if (a > 9) {
str += a % 10 + '0';
in = 1;
}
else {
str += a + '0';
in = 0;
}
}
if (in == 1) str += '1';
return str;
}
bool check_reverse(string str) {
if (str.size() == 1) return true;
for (int i = 0; i * 2 < str.size(); i++) {
if (str[i] != str[str.size() - i - 1]) return false;
}
return true;
}
int main() {
string num, rev;
int K;
cin >> num >> K;
if (check_reverse(num)) {
cout << num << endl;
cout << 0 << endl;
return 0;
}
int c = 0;
for (int i = 0; i < num.size(); i++) {
if (num[i] != '0') break;
else c++;
}
while(c--) {
num.erase(0);
}
for (int i = num.size() - 1; i >= 0; i--) {
rev += num[i];
}
int j;
for (j = 0; j < K; j++) {
rev = reverse_add(rev);
if (check_reverse(rev)) break;
}
for (int i = rev.size() - 1; i >= 0; i--) {
printf("%c", rev[i]);
}
printf("\n%d\n", j == K ? K : j + 1);
return 0;
}

本文介绍了一个用于解决字符串反转加法并检查其是否为回文的算法实现。该算法首先检查输入字符串是否已经是回文,如果是,则直接返回;如果不是,则进行一系列的反转加法操作直到得到回文为止。文章详细展示了算法的代码实现,包括如何进行字符串的反转加法运算以及如何检查字符串是否为回文。
289

被折叠的 条评论
为什么被折叠?



