75分求助
查看原帖
75分求助
1044970
LucAlva楼主2024/3/19 19:21
#include <bits/stdc++.h>
using namespace std;
char a1[110];
int a[300],b[300],c[300];
bool hw(int m){
    for(int i=0;i<m;i++){
        if(c[i]!=c[m-i-1]) return 0;
    }
    return 1;
}
int main(){
    int n;
    cin>>n>>a1;
    int len=strlen(a1);
    for(int i=0;i<len;i++){
        if(a1[i]>='0'&&a1[i]<='9'){
            a[i]=a1[len-1-i]-'0';
            b[i]=a1[i]-'0';
        }
        else{
            a[i]=a1[len-1-i]-'A'+10;
            b[i]=a1[i]-'A'+10;
        }
        c[i]=b[i];
    }
    if(hw(len)==1){
		cout<<0;
		return 0;
	}
    for(int i=1;i<=30;i++){
        int x=0;
        for(int j=0;j<len;j++){
            c[j]=a[j]+b[j]+x;
            x=c[j]/n;
            c[j]%=n;
        }
        if(x) c[len++]=x;
        if(hw(len)==1){
            cout<<"STEP="<<i;
            return 0;
        }
        for(int j=0;j<len;j++){
		    a[j]=c[len-1-j];
		    b[j]=c[j];
		}
    }
    cout<<"Impossible!";
    return 0;
}
2024/3/19 19:21
加载中...