#include <stdio.h>
#include <math.h>
#include <string.h>
#define isChar(i) ((i>='A'&&i<='Z')||(i>='0'&&i<='9'))
typedef unsigned long long ULL;
int vals[1000];
char input[1000], val1[1000], val2[1000];
ULL getVal(char *a, int base, int ln)
{
int len = ln, i;
ULL val=0;
for (i=len-1 ; i>=0 ; i--)
{
val = val + (vals[a[i]]) * (int)pow((double)base,(len-1-i));
}
return val;
}
int setVals()
{
int i;
for (i=0 ; i<=9 ; i++)
{
vals[i+'0'] = i;
}
for (i='A' ; i<='Z' ; i++)
{
vals[i] = (i-55);
}
}
int parser(char *a, int *l1, int *l2, int *mb1, int *mb2)
{
int i, j, min;
for (i=0 ; !isChar(a[i]) ; i++);
min=-1;
for (j=0 ; isChar(a[i]) ; i++, j++)
{
val1[j]=a[i];
if (vals[a[i]]>min)
min = vals[a[i]];
}
val1[j]='\0';
*l1=j;
*mb1=min+1;
for ( ; !isChar(a[i]) ; i++);
min=-1;
for (j=0 ; isChar(a[i]) ; i++, j++)
{
val2[j]=a[i];
if (vals[a[i]]>min)
min = vals[a[i]];
}
val2[j]='\0';
*l2=j;
*mb2=min+1;
}
int main()
{
int l1, l2, minb1, minb2, f, i, j;
setVals();
while (gets(input))
{
parser(input,&l1,&l2,&minb1,&minb2);
f=0;
for (i=(minb1>1?minb1:2) ; i<=36 && !f ; i++)
{
for (j=(minb2>1?minb2:2) ; j<=36 && !f ; j++)
{
if (getVal(val1,i,l1) == getVal(val2,j,l2))
{
printf("%s (base %d) = %s (base %d)\n",val1,i,val2,j);
f=1;
}
}
}
if (!f) printf("%s is not equal to %s in any base 2..36\n",val1,val2);
}
return 0;
}
Sunday, October 23, 2011
[UVa] 343 - What base is this?
I was too lazy when I saw this problem for the very first time 2 years ago. Solving problems that required parsing a string were too tedious for me back then. Well, guess what it generated a great code for future problems from this domain.
Subscribe to:
Post Comments (Atom)
Connect Rapoo MT750S with Linux (Tested on Manjaro)
I bought this obvious copy of MX Master 2S in hopes of having the device switching functionality along with a lightweight body because I ha...
-
I like coding a lot, keeps me glued to the PC for hours. For that reason it's a need to edit the Syntax Highlighter to suit my eyes for...
-
I bought this obvious copy of MX Master 2S in hopes of having the device switching functionality along with a lightweight body because I ha...
-
Method: The problem at first glance seems too straightforward but it's not that much. Think a bit about the lines "Erin can add ...
No comments:
Post a Comment
Post your comment here. If you want to say something about programming problems, scripts, software etc, please try to be as descriptive as possible.