求助帖 25分
查看原帖
求助帖 25分
185483
zhab楼主2021/7/7 18:03
#include<bits/stdc++.h>
using namespace std;
int n,a[101]={0},b[101],ans=0,i;
void input(int a[]);
bool check(int a[]);
void plus_f(int a[]);
int main(){
	input(a);
	if(check(a))
	{
		cout<<"STEP="<<0;return 0;
	}
	while(ans<=30){
		ans++;
		plus_f(a);
		if(check(a))
		{
		cout<<"STEP="<<ans;return 0;
		}
	}
	cout<<"Impossible!";return 0;
}
void input(int a[]){
	string s;
	cin>>n>>s;
	
	a[0]=s.length();
	for(i=1;i<=a[0];i++){
		if(s[a[0]-i]>='0'&&s[a[0]-i]<='9') a[i]=s[a[0]-i]-'0';
		else a[i]=s[a[0]-i]-'A'+10;
	}
}
bool check(int a[]){
	for(i=1;i<=a[0];i++){
		if(a[i]!=a[a[0]-i+1]) return false;	
	}
	return true;
}
void plus_f(int a[]){
	for(i=1;i<=a[0];i++) {
		b[i]=a[a[0]-i+1];
		a[i]+=b[i];
	}
	for(i=1;i<=a[0];i++){
		a[i+1]+=a[i]/n;
		a[i]%=n;
	}
	if(a[a[0]+1]>0) a[0]++;
	//将其赋值到倒叙数组里
}



2021/7/7 18:03
加载中...