#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...
-
Install MinGW GCC Port on Windows. 1. Just go to this address [ http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/ ]...
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.