好题!
#include <bits/stdc++.h>
using namespace std;
#define f(a) (isdigit(a)?a-'0':a-'A'+10)
string num="0123456789ABCDEF";
void add(int& n,string& a){
string b=a;
reverse(b.begin(),b.end());
int carry=0;
for(int i=a.size()-1;i>=0;i--){
int sum=carry+f(a[i])+f(b[i]);
carry=sum/n;
a[i]=num[sum%n];
}
if(carry) a="1"+a;
}
bool check(string b){
string a=b;
reverse(b.begin(),b.end());
return a==b;
}
int main(){
int n;string m;cin>>n>>m;
int step;
for(step=0;step<=30;step++)
if(check(m)) break;
else add(n,m);
if(step<=30) cout<<"STEP="<<step;
else cout<<"Impossible!";
return 0;
}