#include<iostream>
using namespace std;
string ipt,a;
int n;
string Turn(string a)//将数颠倒过来的函数
{
string x;
int t=0;
for(int i=a.size()-1;i>=0;i--)
{
x[t++]=a[i];
}
return x;
}
bool pld(string a)//判断是否回文
{
if(a.size()%2)
for(int i=0;i<a.size()/2;i++)
{
if(a[i]!=a[a.size()-i]) return false;
}
else
for(int i=0;i<a.size()/2;i++)
{
if(a[i]!=a[a.size()-i-1]) return false;
}
return true;
}
string Plus(int n,string a,string b)//做加法的函数
{
bool c=0;
string ans;
for(int i=0;i<a.size();i++)
{
int x,y;
if(a[i]>='A'&&a[i]<='F') x=(int)(a[i]-55);
else x=(int)(a[i]-48);
if(b[i]>='A'&&b[i]<='F') y=(int)(b[i]-55);
else y=(int)(a[i]-48);
int p;
if(c) p++;
if(x+y<n) p=x+y,c=0;
else p=x+y-n,c=1;
if(p>9) ans+=(char)(p+55);
else ans+=(char)(p+48);
}
return Turn(ans);
}
int main()
{
cin>>n>>ipt;
a=ipt;
for(int i=1;i<=30;i++)
{
a=Plus(n,a,Turn(a));
if(pld(a))
{
cout<<"STEP="<<i<<endl;
return 0;
}
}
cout<<"Impossible!\n";
return 0;
}
有问题(输出是“STEP=1”)
请老师指教一下,谢谢