Code: Select all
#include <stdio.h>
#include <string.h>
#include <math.h>
char a[50];
char a1[50];
char b[50];
char b1[50];
main()
{
int i,j,h,la,lb,f,ma,mb;
unsigned long va,vb;
while(scanf("%s%s",&a1,&b1)==2)
{
ma=mb=0;
strcpy(a,a1);
strcpy(b,b1);
f=0;
la=strlen(a)-1;
lb=strlen(b)-1;
for(i=0;i<=la;i++)
{
if(a[i]<='Z' && a[i]>='A')
a[i]-=7;
a[i]=a[i]-'0';
if(a[i]>ma)
ma=a[i];
}
for(i=0;i<=lb;i++)
{
if(b[i]<='Z' && b[i]>='A')
b[i]-=7;
b[i]=b[i]-'0';
if(b[i]>mb)
mb=b[i];
}
if(ma==0)
ma=1;
if(mb==0)
mb=1;
for(i=ma+1;i<=36;i++)
{
va=a[la];
for(h=la-1;h>=0;h--)
{
va+=a[h]*(int)pow(i,(la-h));
}
for(j=mb+1;j<=36;j++)
{
vb=b[lb];
for(h=lb-1;h>=0;h--)
{
vb+=b[h]*(int)pow(j,(lb-h));
}
if(i!=j && va==vb)
{
f=1;
break;
}
}
if(f)
break;
}
if(va==0 && vb==0)
printf("0 (base 2) = 0 (base 2)\n");
else
if(j==37 && i==37)
printf("%s is not equal to %s in any base 2..36\n",a1,b1);
else
printf("%s (base %d) = %s (base %d)\n",a1,i,b1,j);
}
return 0;
}