求助
查看原帖
求助
455643
claunflsh楼主2021/11/7 21:18
#include<iostream>
#include<string>
using namespace std;

int n,a[101]={},b[101]={},len,ans;
string s;

void input(int *a)
{
	int i;
	
	cin>>n>>s;
	
	len=s.length();
	
	for(i=1;i<=len;i++)
	{
		if(s[len-i]>='0'&&s[len-i]<='9')
		{
			a[i]=a[len-i]-'0';
		}
		else
		{
			a[i]=s[len-i]-'A'+10;
		}
	}
}

bool check(int *a)
{
	int i;
	
	for(i=1;i<=len;i++)
	{
		if(a[i]!=a[len-i+1])
		{
			return false;
		}
	}
	
	return true;
}

void add(int *a)
{
	int i;
	
	for(i=1;i<=len;i++)
	{
		b[i]=a[len-i+1];
	}
	
	for(i=1;i<=len;i++)
	{
		a[i]+=b[i];
	}
	
	for(i=1;i<=len;i++)
	{
		a[i+1]+=(a[i]/n);
		a[i]%=n;
	}
	
	if(a[len+1]>0)
	{
		len++;
	}
}

void work()
{
	ans=0;
	
	if(check(a)==true)
	{
		cout<<"STEP=0\n";
		
		return;
	}
	
	while(ans<=30)
	{
		ans++;
		
		add(a);
		
		if(check(a)==true)
		{
			cout<<"STEP="<<ans<<endl;
			
			return;
		}
	}
	
	cout<<"Impossible!"<<endl;
}

int main()
{
	input(a);
	
	work();
	
	return 0;
}
2021/11/7 21:18
加载中...