25分求助!
查看原帖
25分求助!
721262
yzh091028楼主2024/1/23 22:08
#include<bits/stdc++.h>
using namespace std;
int z[300],d[300],h[300];
int main(){
    string m;
    int n,ans=0;
    cin>>n>>m;
    int c1=-1;
    for(int i=m.size()-1;i>=0;i--){
        if(isdigit(m[i])){
            z[++c1]=m[i]-'0';
            d[i]=m[i]-'0';
        }
        else{
            z[++c1]=m[i]-'A'+10;
            d[i]=m[i]-'A'+10;
        }
    }
    int l=m.size();
    while(ans<=30){
        int s=0;
        for(int i=0;i<l;i++){
            if(h[i]+z[i]+d[i]<n){
                h[i]=h[i]+z[i]+d[i];
                s++;}
            else{
                h[i]=(h[i]+z[i]+d[i])%n;
                h[i+1]=(h[i]+z[i]+d[i])/n;
                if(i==l-1){
                    s++;
                }
            }
        }
        int st=1;
        for(int i=0;i<l/2;i++){
            if(h[i]!=h[l-1-i]){
                memset(z,0,sizeof(z));
                memset(d,0,sizeof(d));
                int c3=-1;
                for(int i=l;i>=0;i--){
                    z[++c3]=h[i];
                    d[i]=h[i];
                }
                st=0;
                break;
            }
        }ans++;
        if(st==1){
            cout<<"STEP="<<ans;
            return 0;
        }
        
    }
    cout<<"Impossible!";
}
2024/1/23 22:08
加载中...