如题,下了一组数据后在Devcpp上验证了一下是可以的
#include<stdio.h>
int isreverse(int *a,int l)
{
for(int i=0,j=l-1;i<j;i++,j--) if(a[i]!=a[j]) return 0;
return 1;
}
int main(void)
{
char ch;
int m[100],len=0,rev[100],step,add[100]={0},i,n;
scanf("%d",&n);
getchar();
for(ch=getchar();ch!=EOF&&ch!='\n';){
m[len]=ch-'0';
len++;
ch=getchar();
}
for(step=0;!isreverse(m,len);step++){
for(i=1;i<=len;i++){
rev[i-1]=m[len-i];
}
for(i=0;i<len;i++){
add[i+1]=(add[i]+m[i]+rev[i])/n;
add[i]=(add[i]+m[i]+rev[i])%n;
}
if(add[i])len++;
for(i=0;i<len;i++){
m[i]=add[i];
add[i]=0;
}
if(step>30)break;
}
if(step<=30) printf("STEP=%d",step);
else printf("Impossible!");
}