看看我的```cpp
#include <iostream>
#include <stdio.h>
#include <cstring>//回文数
using namespace std;
char a1[300];
int a[300],b[300],len,m;
void into(){ //倒转操作
for(int i=1;i<=len;i++)
b[i]=a[len-i+1];
}
bool po(){ //判断是否回文
for(int i=1;i<=len;i++)
if(a[i]!=b[i]) return false;
return true;
}
void solve(int t){
if(t>30){
cout<<"Impossible!"<<endl;
return ;
}
into();
if(po()){
cout<<"STEP="<<t<<endl;
return ;
}
int x=0;
for(int i=1;i<=len;i++){
a[i]=a[i]+b[i]+x;
x=a[i]/m;
a[i]%=m;
}
a[len+1]=x;
while(a[len+1]>0) len++; //重新判断长度
solve(t+1);
}
int main(){
cin>>m;
scanf("%s",a1);
len=strlen(a1);
for(int i=0;i<len;i++){
if(a1[i]>='0' && a1[i]<='9') a[len-i]=a1[i]-'0';
else a[len-i]=a1[i]+10-'A';
}
solve(0);
}
```
by wei345 @ 2024-05-18 08:21:47