#include <iostream> #include <string> #include <map> using namespace std; int main() { int mday[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; map<string,int> MonthToInt = { {"January",1}, {"February",2}, {"March",3}, {"April",4}, {"May",5}, {"June",6}, {"July",7}, {"August",8}, {"September",9}, {"October",10}, {"November",11}, {"December",12} }; string intToweekday[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; int year, mon,day; char str[100]; string month; bool IsBefore; while (scanf("%d %s %d",&day,str,&year)!=EOF) { // 注意 while 处理多个 case month = str; mon = MonthToInt[month]; if(year <2023 ||2023==year && mon<3 ||2023==year && 3==mon && day<8){ IsBefore = true; } else{ IsBefore=false; } int begY,begM,begD,endY,endM,endD; if(IsBefore){ begY = year; begM = mon; begD = day; endY = 2023; endM = 3; endD = 8; } else{ begY = 2023; begM = 3; begD = 8; endY = year; endM = mon; endD = day; } int totalDay=0; while(1){ if(begY == endY && begM == endM && begD == endD) { break; } else{ ++totalDay; bool isLeap = begY%400==0 || begY%4==0&&begY%100!=0; if(isLeap){ mday[2] = 29; } else{ mday[2] = 28; } ++begD; if(begD>mday[begM]){ begD = 1; ++begM; if(begM>12){ begM=1; ++begY; } } } } if(IsBefore){ //今天周三 所以是3 (x+totalDay)%7 = 3; //x+totalDay = 7y+3 //x = 7y+3 - totalDay; //(7y+3-totalDay)%7 = printf("%s\n", intToweekday[(10-totalDay%7)%7].c_str()); } else{ printf("%s\n", intToweekday[(totalDay+3)%7].c_str()); } } } // 64 位输出请用 printf("%lld")