用得着写这么多吗?~~虽然我的压过行,但展开了也比你的少啊~~```cpp
#include <bits/stdc++.h>
using namespace std;
const int N = 105;
int a[N], b[N];
int n, len;
string m;
bool check() {
for (int i = 0; i < len; ++i)
if (a[i] != a[len - i - 1])
return false;
return true;
}
void ps() {
for (int i = 0; i < len; ++i)
b[i] = a[len - i - 1];
for (int i = 0; i < len; ++i)
a[i] += b[i];
for (int i = 0; i < len; ++i) {
a[i + 1] += a[i] / n;
a[i] %= n;
}
if (a[len])
++len;
}
int main() {
scanf("%d", &n);
cin >> m;
len = m.size();
for (int i = 0; i < len; ++i)
if (m[i] >= '0' && m[i] <= '9')
a[i] = m[len - 1 - i] - '0';
else
a[i] = m[len - 1 - i] - 'A' + 10;
int step;
for (step = 1; step <= 30; ++step) {
ps();
if (check())
break;
}
if (step <= 30)
cout << "STEP=" << step << endl;
else
cout << "Impossible!" << endl;
return 0;
}
```
by Dumbo @ 2023-11-19 19:09:46
对不起,排版乱了。
```cpp
#include <bits/stdc++.h>
using namespace std;
int a[105], b[105], n, len,step;
string m;
bool check() {
for (int i = 0; i < len; ++i)
if (a[i] != a[len - i - 1])
return false;
return true;
}
void ps() {
for (int i = 0; i < len; ++i)b[i] = a[len - i - 1];
for (int i = 0; i < len; ++i)a[i] += b[i];
for (int i = 0; i < len; ++i) {a[i + 1] += a[i] / n;a[i] %= n;}
if (a[len])++len;
}
int main() {
scanf("%d", &n);
cin >> m;
len = m.size();
for (int i = 0; i < len; ++i)
if (m[i] >= '0' && m[i] <= '9')a[i] = m[len - 1 - i] - '0';
else a[i] = m[len - 1 - i] - 'A' + 10;
for (step = 1; step <= 30; ++step) {ps();if (check()){break;}}
if (step <= 30)cout << "STEP=" << step << endl;
else cout << "Impossible!" << endl;
return 0;
}
```
by Dumbo @ 2023-11-19 19:20:33