#include #include #include using namespace std; int days[] = { 31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int month_day(int mon, int yr){ //printf("%d, %d\n", mon, yr); if(mon == 2){ if(yr % 400 == 0) return 29; else if(yr % 100 == 0) return 28; else if(yr % 4 == 0) return 29; else return 28; } else return days[mon - 1]; } bool isGirl(int &mon){ if(mon > 50){ mon -= 50; return true; } else return false; } int main(int argc, char **argv){ char buffer[20]; string input; int day, mon, yr, len_p, len_s, i; uint64_t sum; int prefix, suffix; bool girl; scanf("%s", buffer); input = string(buffer); while(input != "end"){ sum = day = mon = yr = prefix = suffix = len_p = len_s = i = 0; //printf("%s\n\n", input.c_str()); while(i < input.size() && input[i] != '/'){ prefix = prefix * 10 + input[i] - '0'; sum = sum * 10 + input[i] - '0'; i++; } //printf("%d\n\n", prefix); len_p = i + 1; if(i != 6 || i >= input.size()){ printf("invalid\n"); goto read; } if(i++ >= input.size()){ printf("invalid\n"); goto read; } for(; i < input.size(); ++i){ if(!isdigit(input[i])){ printf("invalid\n"); goto read; } //printf("%c\n\n", input[i]); suffix = suffix * 10 + input[i] - '0'; sum = sum * 10 + input[i] - '0'; len_s++; } //printf("%d\n\n", suffix); //printf("%d\n", sum); if(len_s != 3 && len_s != 4){ printf("invalid\n"); goto read; } if((len_s > 3) && (sum % 11 != 0)){ printf("invalid\n"); goto read; } day = prefix % 100; mon = (prefix / 100) % 100; yr = (prefix / 10000) % 100; if(!((yr >= 20 && yr <= 99) || (yr >= 0 && yr <= 9))){ printf("invalid\n"); goto read; } yr += (yr >= 20 && yr <= 99) ? 1900 : 2000; //printf("%d, %d\n", yr, len_s); if((yr <= 1953) && (len_s != 3)){ printf("invalid\n"); goto read; } else if((yr >= 1954) && (len_s != 4)){ printf("invalid\n"); goto read; } girl = isGirl(mon); if(day > month_day(mon, yr) || day < 1){ printf("invalid\n"); goto read; } if(girl) printf("girl\n"); else printf("boy\n"); read: scanf("%s", buffer); input = string(buffer); } return 0; }