Code: Select all
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <map>
using namespace std;
map<char,int> val;
int tobase10(string x,int base)
{
int i=0,j=0,sum=0;
for (i=x.length() ,j=1; i>=1 ; i--,j*=base)
{
sum += j * val[x[i-1]];
}
return sum;
}
bool valid(string x,int base)
{
for (int i=0;i<x.length();i++)
{
//cout <<val[x[i]]<<" " <<base <<endl;
if (val[x[i]] >= base) return false;
}
return true;
}
int main()
{
string x,y;
bool found;
int angka;
for (int i=0;i<=9;i++)
val[i+48] = i;
for (i=1;i<=26;i++)
val[i+64] = i+9;
while (cin >> x >> y)
{
found=false;
for (i=1;i<=36;i++)
{
for (int k=i;k<=36;k++)
{
if (valid(x,i) && valid(y,k))
{
if (tobase10(x,i)==tobase10(y,k))
{
cout << x << " (base "<<i<<") = "<<y<<" (base "<<k<<")"<<endl;
found=true;
break;
}
}
if (valid(x,k) && valid(y,i))
{
if (tobase10(x,k)==tobase10(y,i))
{
cout << x << " (base "<<k<<") = "<<y<<" (base "<<i<<")"<<endl;
found=true;
break;
}
}
}
if (found) break;
}
if (!found) cout << x << " is not equal to " << y << " in any base 2..36" <<endl;
}
return 0;
}