0
章逸轩
初级守护
初级守护
题目链接: 酷町堂:5235
#include<iostream>
using namespace std;
int n;
string f(string a){
string s="";
for(int i=a.size()-1;i>=0;i--){
s+=a[i];
}
return s;
}
string ff(string a,string b){
string z="";
int len;
int x[100005]={0},y[100005]={0};
int c[000005]={0};
for(int i=a.size()-1;i>=0;i--){
x[++len]=a[i]-48;
}
len=0;
for(int i=b.size()-1;i>=0;i--){
y[++len]=b[i]-48;
}
x[0]=a.size();
y[0]=b.size();
for(int i=1;i<=max(x[0],y[0]);i++){
c[i]=x[i]+y[i]+c[i];
c[i+1]=c[i]/n;
c[i]%=n;
}
c[0]=max(x[0],y[0]);
if(c[c[0]+1]!=0){
c[0]++;
}
for(int i=c[0];i>=1;i--){
z+=char(c[i]+48);
}
return z;
}
int main(){
cin>>n;
string a;
int i=1;
cin>>a;
while(1){
if(f(ff(a,f(a)))==ff(a,f(a))||i>30){
break;
}
a=ff(a,f(a));
i++;
}
if(i>30){
cout<<"Impossible!";
}else{
cout<<"STEP="<<i;
}
return 0;
}