#include<bits/stdc++.h>
using namespace std;
int n,a[101],b[101],ans,i;
void init(int a[]) //将数串s转化为数组a
{
string s;
cin>>n>>s; //读入字符串s
memset(a,0,sizeof(a)); //数组a清为0
/*上面这一步等同于:
for(int i = 0;i<sizeof(a);i++)
{
a[i] = 0;
}*/
a[0] = s.length(); //用a[0]计算字符串s的位数
for(i = 1;i<=a[0];i++)//等同于:i<=s.length()
{
if(s[a[0]-i]>='0' && s[a[0]-i]<='9')
{
a[i] = s[a[0]-i]-'0'; //将数串s转换为数组a,并倒序存储
}
else
{
a[i] = s[a[0]-i] - 'A'+10;
}
}
}
bool check(int a[]) //判别整数数组a是否为回文数
{
for(int i = 1;i<=a[0];i++)
{
if(a[i] != a[a[0]-i+1])
{
return flase;
}
}
return true;
}
void jia(int a[]) //整数数组a与其反序数b进行n进制加法运算
{
int i,k;
for(i = 1;i<=a[0];i++) //反序数b
{
b[i] = a[a[0]-i+1];
}
for(i = 1;i<=a[0];i++) //逐位相加
{
a[i]+=b[i];
}
for(i = 1;i<=a[0];i++) //处理进位
{
a[i+1]+=a[i]/n;
a[i]%=n;
}
if(a[a[0]+1]>0) //修正新的a的位数(a+b只能进一位)
{
a[0]++;
}
}
int main()
{
init(a);
if(check(a))
{
cout<<0<<endl;
return 0;
}
ans = 0; //步数初始化为0
while(ans<=30)
{
ans++;
jia(a);
if(check(a))
{
cout<<ans<<endl;
return 0;
}
}
cout<<"Impossible"; //输出无解信息
return 0;
}
file:///C:/Users/lenovo/Desktop/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202020-11-15%20123652.png
上面这个链接是我的报错信息☝☝☝,哪位dalao帮我看看