343

#include <iostream>
#include <string>
#include <cstring>
#include <string.h>

using namespace std;

unsigned long long decOf(string s,int a)
{
	unsigned long long d;
	unsigned long long _pow=1;
	unsigned long long r=0;
	if((s[s.size()-1]-'0')>=0 && (s[s.size()-1]-'0')<=9)
		d=(s[s.size()-1]-'0');
	else
		d=(s[s.size()-1]-55);
	if(d>=a)
	{
		return -1;
	}
	r+=(d*1);
	for(int i=s.size()-2;i>=0;i--)
	{
		_pow*=a;
		if((s[i]-'0')>=0 && (s[i]-'0')<=9)
		d=(s[i]-'0');
		else
		d=(s[i]-55);
		if(d>=a)
		{
			return -1;
		}

		r+=(d*_pow);
	}

	return r;
}

int main()
{
	string str,str1;
	unsigned long long dec,dec1;
	int m,n;
	//cout<<'Z'-55<<"\n";
	//cout<<decOf("Z",36)<<"\n";
	//cout<<decOf("35",10)<<"\n";
	while(cin>>str)
	{
		cin>>str1;
		m=0;
		n=0;
		for(int i=2;i<=36;i++)
		{
			dec=decOf(str,i);
			if(dec==-1)
			continue;
			for(int j=2;j<=36;j++)
			{
				dec1 = decOf(str1,j);
				//cout<<dec << " "<<dec1<<" = "<<i<<" "<<j<<"\n";
				if(dec1==-1)
					continue;
				if(dec==dec1 && dec!=-1)
				{
					m=i;
					n=j;
					//cout<<m<<" "<<n<<"\n";
					break;
				}
			}
			if(m!=0 && n!=0)
			{
				//cout<<"enter\n";
				break;
			}
		}
		//cout<<m<<" "<<n<<" ds\n";
		if(m!=0 && n!=0)
		{
			cout<<str<<" (base "<<m<<") = "<<str1<<" (base "<<n<<")\n";
		}
		else
			cout<<str<<" is not equal to "<<str1<<" in any base 2..36\n";
	}


	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *