代码如下:
#include <bits/stdc++.h>
using namespace std;
int main(){
int p=1,ans=0,i,j,n,x,g=0,gm=0,a[105],b[105];
char c[105];
scanf("%d",& n);
scanf("%s", c);
j=0;
while(c[j]!=0){
if((c[j]>='0')&&(c[j]<='9'))a[j+1]=c[j]-'0';
else a[j+1]=c[j]-'A'+10; j++;
}
while(ans<=30){
g=0;
i=1;
while(i<=j){
x=a[j-i+1]+a[i]+g;
g=x/n;
b[j-i+1]=x%n;
i++;
}
if(g!=0) b[0]=g;
if(g!=0){
for(i=1;i<=j+1;i++){
a[i]=b[i-1];
}
j++;
}
else for(i=1;i<=j;i++){
a[i]=b[i];
}
ans++;
i=1;
gm=j;
p=1;
while(i<=gm){
if(a[i]!=a[gm])p=0;
i++;
gm--;
}
if(p){
cout<<"STEP=%d"<<ans;
return 0;
}
}
cout<<"Impossible!";
return 0;
}