#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_L 128
int find_min(char *s)
{
char cc='0';
while(*s)
{
if(*s>cc)
cc=*s++;
else
s++;
}
if(cc=='0')
return 2;
else if(cc<='9')
return cc-'0'+1;
else
return cc-'A'+11;
}
int conv(char *s, int base)
{
int len=strlen(s), w=1, sum=0;
while(len-->0)
{
if(s[len]>='A')
sum+=w*(s[len]-'A'+10);
else
sum+=w*(s[len]-'0');
w*=base;
}
return sum;
}
int main(void)
{
char n1[MAX_L], n2[MAX_L];
int i, j, m1, m2, b1, b2, flag=0;
#ifndef ONLINE_JUDGE
freopen("p.in", "r", stdin);
#endif
while(scanf("%s%s", n1, n2)!=EOF)
{
flag=0;
m1=find_min(n1);
m2=find_min(n2);
for(i=m1; i<=36 && !flag; i++)
for(j=m2; j<=36 && !flag; j++)
if(conv(n1, b1=i) == conv(n2, b2=j))
flag=1;
if(!flag)
printf("%s is not equal to %s in any base 2..36\n", n1, n2);
else
printf("%s (base %d) = %s (base %d)\n", n1, b1, n2, b2);
}
return 0;
}
uva-343 进制转换
最新推荐文章于 2021-12-22 21:12:05 发布
本文介绍了一个程序,该程序能够找出两个字符串表示的数值在2到36进制中是否存在相同的表示方式。通过寻找最小可能的基数,并在此基础上进行转换与比较,实现了不同进制数之间的有效对比。
495

被折叠的 条评论
为什么被折叠?



