75pt求助
查看原帖
75pt求助
1245629
woscxk楼主2024/3/10 09:28
#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分

2024/3/10 09:28
加载中...