#include #include #include #include int readID(char *id, int *pPreSlash, int *pAfterSlash); int validateID(int preSlash, int afterSlash); void gender(int preSlash); int main() { int preSlash, afterSlash; char id[255]; while(1) { scanf("%s", id); if(!(strcmp(id, "end"))) { break; } if(readID(id, &preSlash, &afterSlash)) { if(validateID(preSlash, afterSlash)) gender(preSlash); } } return 0; } int readID(char *id, int *pPreSlash, int *pAfterSlash) { int res=0; res= sscanf(id, "%d/%d", pPreSlash, pAfterSlash); if(res != 2) { printf("invalid\n"); return 0; } return 1; } int validateID(int preSlash, int afterSlash) { int mesiceDny[] = {31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int yy=0, mm=0, dd=0; yy= preSlash / 10000; mm= (preSlash % 10000) / 100; dd= preSlash % 100; int idx = mm - 50 - 1; if( idx > 0 ) { if( mesiceDny[idx] == -1 ) { if( yy % 4 == 0 ) { if( dd > 29 ) { printf("invalid\n"); return 0; } } else { if( dd > 28 ) { printf("invalid\n"); return 0; } } } else { if( dd > mesiceDny[idx] ) { printf("invalid\n"); return 0; } } } if( yy >= 10 ) { if( yy <= 53 ){ if( afterSlash >= 1000 ) { printf("invalid\n"); return 0; } } else { if( afterSlash < 1000 ) { printf("invalid\n"); return 0; } } } double dFirst = preSlash / 11.; double dSecond = afterSlash / 11.; double dSum = dFirst + dSecond; double dPred = 0; double dret = modf(dSum, &dPred); if( 0 != dret ) { printf("invalid\n"); return 0; } return 1; } void gender(int preSlash) { int mm= (preSlash % 10000) / 100; if(mm > 12) { printf("girl\n"); } else { printf("boy\n"); } }