代码如下
#include<iostream>
#include<cstdio>
#include<bits/stdc++.h>
using namespace std;
long long step,l,n,f;
string m,a;
void one(){
for(int i=0;i<l;++i)a[l-i-1]=m[i];
l+=2;
for(int i=0;i<l;i++){
m[i]+=a[i];
if(m[i]>=n) {
m[i+1]++;
m[i]-=n;
}
}while(!m[l-1]) --l;
}int check(){
for(int i=0;i<l;i++){
if(m[i]!=m[l-i-1]) return true;
}return false;
}
int main(){
cin>>n>>m;
l=m.length();
for(int i=0;i<l;i++){
if(m[i]>='0'&&m[i]<='9') m[i]-='0';
else m[i]=m[i]-'A'+10;
}while(check()){
++step;
if(step>30){
f=1;
break;
}one();
}if(f==0) cout<<"STEP="<<step;
else printf("Impossible!");
return 0;
}