云剪贴板网址: https://www.luogu.com.cn/paste/qwdyk3ju 代码如下:
#include <bits/stdc++.h>
using namespace std;
int m[500],mm[500],len;
void get(string x)
{
len=x.size();
for (int i=0; i<len; i++)
{
if (x[i]>='0' && x[i]<='9')
{
m[i]=x[i]-'0';
}
else
{
m[i]=x[i]+'A'-10;
}
}
}
void plus(int n)
{
for (int i=0; i<len; i++)
{
mm[0+j]=m[len-1-j];
}
for (int j=0; j<len; j++)
{
m[j]+=mm[j];
if (m[j]>=n)
{
m[j+1]+=m[j]/n;
m[j]%=n;
if (j+1==len) len++;
}
}
}
bool huwe()
{
for (int j=0; j<=len/2; j++)
{
if (m[j]!=m[len-1-i]) return false;
}
return true;
}
int main()
{
int n;
string s;
cin >> n;
cin >> s;
get(s);
for (int k=3; k<=30; k++)
{
plus(n);
if (huwe())
{
cout << "STEP=" << k;
return 0;
}
}
cout << " Impossible!" << endl;
return 0;
}