#include<stdio.h>
#define M 40
int FindMinBase(char[]);
unsigned long ToDec(char[],int);
int main()
{
unsigned long i,j,k,mbx,mby,s;
unsigned long dx,dy;
char X[M],Y[M],Z[10000];
freopen("in.txt","r",stdin);
while(gets(Z))
{
sscanf(Z,"%s%s",X,Y);
mbx=FindMinBase(X);
mby=FindMinBase(Y);
s=0;
for(i=mbx;i<=36;i++)
{
dx=ToDec(X,i);
for(j=mby;j<=36;j++)
{
dy=ToDec(Y,j);
if(dx==dy)
{
printf("%s (base %d) = %s (base %d)\n",X,i,Y,j);
s=1;break;
}
}
if(dx==dy)break;
}
if(!s)printf("%s is not equal to %s in any base 2..36\n",X,Y);
}
return 0;
}
int FindMinBase(char A[])
{
char ch;
int i,b,mb=2;
for(i=0;A[i];i++)
{
if(A[i]<65)
b=A[i]-47;
else
b=A[i]-54;
if(mb<b)mb=b;
}
return mb;
}
unsigned long ToDec(char A[],int b)
{
unsigned long dec=0,p=1;
int i,d,l;
for(l=0;A[l];l++);
for(i=l-1;i>=0;i--)
{
if(A[i]<65)
d=A[i]-48;
else
d=A[i]-55;
dec=dec+d*p;
p=p*b;
}
return dec;
}
#define M 40
int FindMinBase(char[]);
unsigned long ToDec(char[],int);
int main()
{
unsigned long i,j,k,mbx,mby,s;
unsigned long dx,dy;
char X[M],Y[M],Z[10000];
freopen("in.txt","r",stdin);
while(gets(Z))
{
sscanf(Z,"%s%s",X,Y);
mbx=FindMinBase(X);
mby=FindMinBase(Y);
s=0;
for(i=mbx;i<=36;i++)
{
dx=ToDec(X,i);
for(j=mby;j<=36;j++)
{
dy=ToDec(Y,j);
if(dx==dy)
{
printf("%s (base %d) = %s (base %d)\n",X,i,Y,j);
s=1;break;
}
}
if(dx==dy)break;
}
if(!s)printf("%s is not equal to %s in any base 2..36\n",X,Y);
}
return 0;
}
int FindMinBase(char A[])
{
char ch;
int i,b,mb=2;
for(i=0;A[i];i++)
{
if(A[i]<65)
b=A[i]-47;
else
b=A[i]-54;
if(mb<b)mb=b;
}
return mb;
}
unsigned long ToDec(char A[],int b)
{
unsigned long dec=0,p=1;
int i,d,l;
for(l=0;A[l];l++);
for(i=l-1;i>=0;i--)
{
if(A[i]<65)
d=A[i]-48;
else
d=A[i]-55;
dec=dec+d*p;
p=p*b;
}
return dec;
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.