woscxk @ 2024-03-10 09:28:58
#include<bits/stdc++.h>
using namespace std;
string _plus(string a,string b,int n){
int m[1001]={},j[1001]={},c[1001]={};
string k;
for(int i=0;i<a.length();i++){
if(a[i]>='A'&&a[i]<='Z') m[a.length()-i-1]=a[i]-'A'+10;
else m[a.length()-i-1]=a[i]-'0';
}
for(int i=0;i<b.length();i++){
if(a[i]>='A'&&a[i]<='Z') j[a.length()-i-1]=b[i];
j[b.length()-i-1]=b[i]-'0';
}
int lenc=0,x=0;
while(lenc<(a.length()>b.length()?a.length():b.length())){
c[lenc]=m[lenc]+j[lenc]+x;
x=c[lenc]/n;
c[lenc]%=n;
lenc++;
}
if(x) c[lenc]=1;
else lenc--;
for(int i=lenc;i>=0;i--){
if(c[i]<10) k+=char('0'+c[i]);
if(c[i]>=10) k+=char('A'+c[i]-10);
}
return k;
}
bool hw(string n){
for(int i=0;i<n.length()/2;i++){
if(n[i]!=n[n.length()-i-1]) return false;
}
return true;
}
string zhuan(string n){
string k;
for(int i=n.length()-1;i>=0;i--){
k+=n[i];
}
return k;
}
int main(){
int n;
cin>>n;
string m;
cin>>m;
int cnt=0;
while(!hw(m)){
m=_plus(m,zhuan(m),n);
cnt++;
if(cnt>30){
cout<<"Impossible!";
return 0;
}
}
cout<<"STEP="<<cnt;
return 0;
}
75分