问题标题: 酷町堂:5235:回文数

0
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;
}

 


0
我要回答