/* * Base determination problem */ #include #include #define MAXDIGITS 5 #define MAXBASE 36 int x[MAXDIGITS], y[MAXDIGITS]; /* input digits (with leading zeroes) */ int xmb, ymb; /* minimum bases */ int xb, yb; /* bases */ unsigned long xv, yv; /* value of x, y in bases xb, yb */ /* Skip whitespace; return 1 if eol found, 0 otherwise */ int whiteskip() { int c; while ((c = getchar()) == ' ' || c == '\t') ; if (c == '\n') return 1; ungetc(c,stdin); return 0; } /* Get the digits for a base 2..36 integer */ /* Argument points to 0th element of array */ /* Returns min. base (>0) if successful, 0 otherwise */ int getnum(int *p) { int i, j, c; int minbase; int r[MAXDIGITS]; /* reversed digits */ if (whiteskip()) return 0; /* found end of line */ i = 0; minbase = 2; for (;;) { c = getchar(); if (isdigit(c)) r[i++] = c - '0'; else if (isupper(c)) r[i++] = c - 'A' + 10; else break; /* must be whitespace or end of line */ if (r[i-1] > minbase-1) minbase = r[i-1] + 1; } ungetc(c,stdin); for (j=0;j+i