my code is the following. it does pretty much the same thing as
described in the contest analysis. but i am getting incorrect outputs
for some cases.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

#define REP(i,a,b) for(i=a;i<=b;i++)
#define MAX(a,b) ((a)>(b)?(a):(b))
#define MIN(a,b) ((a)<(b)?(a):(b))
#define ABS(a) (a<0?a*-1:a)
#define MALOC(type,n) ((type*)malloc(sizeof(type)*n))

char in[100];
char ar[] = {'1', '0', '2', '3', '4', '5', '6', '7', '8', '9', 'a',
'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C',
'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
int l;
char out[100];
int counter;

int convert(char c) {
    if (c >= '0' && c <= '9')
        return((c - '0'));
    else if (c >= 'a' && c <= 'z')
        return((c - 'a' + 10));
    else if (c >= 'A' && c <= 'Z')
       return((c - 'A' + 36));
}

int main() {

    FILE *fp = fopen("C:\\t3.in", "r");
    FILE *fp2 = fopen("C:\\t_res.out", "w");

    int i, j, k;
    int base;

    int noofinputs;
    fscanf(fp,"%d", &noofinputs);
    int no = noofinputs;

    double result;

    while (no--) {
        result = 0.0;
        counter = 0;
        fscanf(fp,"%s", in);
        strcpy(out, in);
        l = strlen(in);
        for (i = 0; i < l; i++) {
            for (j = 0; j < i; j++) {
                if (in[j] == in[i]) {
                    out[i] = out[j];
                    break;
                }
            }
            if (j == i || i == 0) {
                out[i] = ar[counter++];
            }
        }



        if (ar[counter] >= '0' && ar[counter] <= '9'){
            base = (ar[counter] - '0');
            }
        else if (ar[counter] >= 'a' && ar[counter] <= 'z')
            base = (ar[counter] - 'a' + 10);
        else if (ar[counter] >= 'A' && ar[counter] <= 'Z')
            base = (ar[counter] - 'A' + 36);
            if(base<=1) base=2;


        for (i = l - 1; i >= 0; i--) {
            result = result + (pow(base, l - 1 - i) * convert(out
[i]));
        }



        fprintf(fp2,"Case #%d: %.0lf\n", noofinputs - no, result);
    }
    fclose(fp);
    fclose(fp2);
    return 0;
}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

this image http://imgur.com/SMoEm.jpg shows the differences between
the correct solution and my solution. [left hand side is correct
solution]

Does somebody know what the problem is?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"google-codejam" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-code?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to